2014-11-04 5 views
21

Quindi sto cercando di creare uno UIScrollView solo in storyboard che mi permetta di aggiungere etichette a scorrimento per più dell'altezza del VC. Ecco quello che ho fatto:UIScrollView in Storyboard non funziona con iOS 8 Size Classes e Autolayout

  1. Creato UIScrollView che ha assunto la dimensione del qualsiasi larghezza qualsiasi altezza VC

  2. vincoli inviato 0 per la spaziatura per vicino più prossimo in alto, in basso, a sinistra ea destra

  3. Creata una vista che è unadella UIScrollView con la stessa larghezza della larghezza di qualsiasi altezza VC ma altezza di 1500 (perché voglio solo che scenda verticalmente).

  4. Set vincoli alla vicino più prossimo come 0 per SOLO a sinistra, in alto, ea destra e impostare il vincolo di altezza 1500.

  5. ho messo un'etichetta nella parte superiore della subView e in fondo

Quando eseguo l'app su un iPhone 6, non scorre verticalmente come voglio. Qualche idea sul perché questo non funziona? Grazie in anticipo.

risposta

45

Per ottenere lo scorrimento è necessario appuntare la vista secondaria (la "vista del contenuto") in alto, a sinistra, in basso ea destra della vista a scorrimento. Inoltre devi dare (alla "vista del contenuto") un esplicito (= non correlato alla vista di scorrimento) altezza e larghezza perché questi sono usati dalla scrollview per calcolarne le dimensioni del contenuto. Nel tuo caso imposta la larghezza uguale alla larghezza della vista principale VC e l'altezza a 1500. Quando la larghezza o l'altezza sono più grandi della dimensione della vista a scorrimento, scorrerà.

vista di scorrimento vincoli (riposte alla visualizzazione principale)

scroll view constraints

vista Contenuto (bloccato a ScrollView + altezza 1500, larghezza = larghezza MAINVIEW) + vincoli etichetta (ad esempio: 20 20 dalla visualizzazione di contenuti in alto a sinistra)

content view + label constraints

+0

Perfetto! Ora funziona come previsto, grazie per l'aiuto; le immagini erano fantastiche – Lucas

+0

Questa è una spiegazione fantastica! Grazie mille. Sono stato anche in grado di aggiungere un vincolo [contentView.width == scrollView.width] all'interno del generatore di interfacce invece di una larghezza di contentView esplicita per ottenere facilmente una scrollview con scorrimento verticale. – Des

+1

Questo non funziona più da Xcode versione 6.1.1 (6A2008a). Qualcun altro ha riscontrato questo problema? Inserire la vista del contenuto nella vista a scorrimento non comporterà nulla mostrando nei miei test di un nuovo progetto semplice con solo questo in esso. – kakubei

1

Avete impostato il contenuto più grande dello schermo stesso? Nel tuo caso, solo più grande in altezza.

Come dice la documentazione Apple: "È necessario impostare la proprietà contentSize sulla dimensione del contenuto scorrevole. Questo specifica la dimensione dell'area scorrevole."

+0

Come detto sopra, la vista di scorrimento riduce la sua dimensione del contenuto dalla vista del contenuto – Lucas

+1

Quindi, come possiamo ottenere questo utilizzando solo lo storyboard signore? – guness

0

L'unica soluzione è aggiungere vincoli alla destra e in fondo alla visualizzazione secondaria fondo di vista del bambino di vista di scorrimento. Controllare anche se tutte le viste dall'alto verso il basso hanno i vincoli corretti insieme all'altezza. Per la vista del wrapper della vista di scorrimento, aggiungere alla larghezza del campo la stessa larghezza e il medesimo vincolo di altezza.