2014-09-30 12 views
5

Ho un'app per iOS e, mentre adeguo tutta l'interfaccia utente al layout automatico di una classe di dimensioni per supportare il nuovo iPhone 6 e iPhone 6 plus ho affrontato un problema strano ... la mia vista pergamena funziona bene su iPhone 4s, 5, 5s e 6 ... su iPhone 6 plus non stanno scorrendo solo verticalmente ma anche orizzontalmente ... come se la dimensione del contenuto della scroll view fosse un paio di pixel più largo di la vista stessa (quindi si sposta orizzontalmente di un paio di pixel e poi rimbalza). non capisco perché sta succedendo questo ...iOS 8 AutoLayout scrollview scorre orizzontalmente su iPhone 6 plus

risposta

11

ho finalmente trovato un modo corretto di farlo lavorare ... L'ho fatto in questo modo:

Vista gerarchia:
- UIView (Vista principale) - UIScrollView (che ho wan della stessa dimensione esatta del vista principale) - UIView (Container vista contenente tutto il materiale da visualizzare nella vista di scorrimento)

Vincoli:

Containar Vista:
- la larghezza è uguale a quella del Main View - 0 leadin, trailing, margine superiore e inferiore con superview (che è la Scroll View)

UIScrollView:
- la larghezza è uguale a quello di la vista principale
- vista centrale sull'asse X in orizzontale (centro X)
- 0 in alto un margine inferiore con superview

+1

Questo non ha funzionato per me. Non capisco anche perché quanto sopra funzionerebbe perché la visualizzazione del contenuto controlla l'UIScrollView eppure imposti la larghezza di UIScrollView – kgaidis

+2

Il mio problema credo sia stato causato da un vincolo -16 nello spazio iniziale e finale per la scrollview alla sua superview che viene aggiunta di default da Interface Builder se dico che voglio che la vista di scorrimento sia della stessa dimensione della finestra (non della stessa larghezza ... viene aggiunta se trascino il bordo della scrollview a mach della finestra). Mettere il vincolo alla larghezza della vista di scorrimento e centrarlo con X mi ha dato un insieme consistente di vincoli per come avrei voluto che la scrollview assomiglia a – Freedom

+0

@kgaidis - iOS fa cose funky per far funzionare le scrollview con l'autolayout: [nota tecnica Apple UIScrollView e Autolayout] (https://developer.apple.com/library/content/technotes/tn2154/_index.html) Un'alternativa è quella di impostare direttamente UIScrollView.contentSize nel codice, una volta completato il layout. Dalla nota tecnica, sembra che i vincoli sul contenuto interno non facciano ciò che pensereste di fare - non sono ciò che determina la dimensione della regione a scorrimento. – ToolmakerSteve