2013-09-23 16 views
19

Ho creato un nuovo controller di visualizzazione, quindi ho aggiunto una vista di scorrimento come figlio della vista radice e ho impostato "Spazio iniziale/alto/finale/spazio inferiore a Superview" a 0 in modo che la vista di scorrimento riempirebbe completamente il suo genitore.Vincoli di spazio trailing errati per i bambini di UIScrollView

Quindi ho aggiunto un pulsante come figlio della vista di scorrimento, con vincoli di spazio di 15 a "Superview" (cioè alla vista di scorrimento). Pertanto, mi aspetto che il pulsante abbia una spaziatura di 15 sui bordi superiore/sinistro/destro e che il contenuto della vista di scorrimento termini alla fine del pulsante "+ 15". Tuttavia la larghezza del pulsante non è corretto (testato all'interno di Xcode 5 Interface Builder, iOS 6/7 simulatori):

Example

Non ha nemmeno funziona se mi costringo il pulsante con "Equal larghezza di Superview "! Ancora non occupa l'intera larghezza.

Come posso risolvere questo?

+0

vedere la risposta qui: http://stackoverflow.com/questions/16843633/ios-autolayout-with-uiscrollview-why-does-content-view-of-scroll-view-not-fill – asdfasdfads

risposta

48

Trovato una buona soluzione :) Il motivo di questo comportamento è che la vista di scorrimento adatta la sua dimensione di visualizzazione del contenuto a ciò che è effettivamente necessario dalle sue sottoview e non riempie automaticamente larghezza/altezza. Se la larghezza deve essere riempita, la vista di scorrimento deve quindi contenere almeno una vista che riempie la larghezza dello schermo.

Con questi passaggi, ho aggiunto una vista che ha larghezza uguale alla vista di scorrimento (la vista di scorrimento di per sé, non la sua area di visualizzazione del contenuto), che porta alla mia vista di scorrimento espandendola infine alla larghezza completa perché avevo anche aggiunto dei vincoli "spazio per superview 0/0/0/0" alla vista di scorrimento.

  • Assumendo una vista controllore vuota con vista una radice
  • schermata Inserisci scorrimento, impostare vincoli "spazio per Superview alto/sinistra/destra/sotto = 0/0/0/0" su di esso
  • Add l'interfaccia utente alla visualizzazione di scorrimento tuttavia si desidera e impostare vincoli anche come si desidera
  • aggiungere una nuova vista, rinominarlo in qualcosa come "Assicura vista di scorrimento riempie larghezza", con i seguenti vincoli
    • Leading/trailing/top spazio per superview (che è la vista di scorrimento!) = 0
    • Altezza 0 perché vogliamo che sia invisibile perché la vista è solo un helper
    • Parte importante: selezionare questa vista e la vista di scorrimento nella gerarchia e vincolarli a una larghezza uguale. Poiché la vista di scorrimento è vincolata alla sua superview, riceverà una larghezza. Quindi questo vincolo assicura che anche la vista del contenuto della vista di scorrimento sia (almeno) così ampia.
+8

Larghezze uguali! Così elegante! –

+0

Per essere chiari, "Aggiungi una nuova vista" deve essere figlio della vista di scorrimento – theblindprophet

Problemi correlati