Ho trascorso due giorni a provare le varie soluzioni per gli approcci di Autolayout misti e puri per ottenere quella che era una banale configurazione scrollview prima del autolayout, ed è ora ufficiale - devo essere troppo stupido. Lo sto configurando principalmente in Storyboard (beh, è così).
Quindi ecco la mia richiesta di aiuto.
viewtree:
UIView
-UIView
-UIView
..-UIScrollview
...-UIButton
...-UIButton
...-UIButton
I pulsanti dovrebbero scorrere in orizzontale (da sinistra a destra e viceversa). Può qualcuno si prega di farmi sapere come impostare i vincoli per raggiungere questo obiettivo utilizzando puro Autolayout ???
-
Ho provato l'approccio misto, in questo modo:
UIView
- UIView
- UIView
..-UIScrollview
...-UIView (contentview)
....-UIButton
....-UIButton
....-UIButton
... e l'impostazione di vincoli di larghezza e altezza fissi per contentview
e le translatesAutoresizingMaskIntoConstraints
impostazioni secondo il TechNote di Apple. I pulsanti e la vista di scorrimento vengono impostati mediante vincoli. Questo fa scorrere lo scrollview (yay) ma ahimè, scorre troppo lontano! Per quanto ne so, l'ampiezza dello scorrimento è in qualche modo raddoppiata rispetto a come ho impostato la visualizzazione del contenuto su ??? !!! ???
Ho provato anche il puro approccio di autolayout, sia con contentview
che senza. Tutte le visualizzazioni sono translatesAutoresizingMaskIntoConstraints=NO
, tranne per self.view
. I pulsanti hanno vincoli di larghezza / altezza fissi e sono bloccati su tutti e quattro i bordi della vista di scorrimento. Non scorre nulla.
Quindi sono totalmente sconcertato perché non riesco a farlo funzionare correttamente. Qualsiasi aiuto è molto apprezzato e se hai bisogno di altre informazioni, chiedi!
Schermata AGGIORNATA con soluzione - vincoli buttonZ:
EDIT @ Jamie Forrest Quindi la soluzione risulta essere il vincolo finale errato sull'ultimo pulsante. Invece di 6441, il valore che avevo impostato era negativo, -6441. La cosa difficile è che quando si imposta il valore nello storyboard, ci sono due opzioni nella barra degli strumenti Pin:
Il valore di tela corrente è negativo (senza scorrimento) e l'opzione di seguito è positiva (attivazione scorrimento). Questo significa che non sono stupido ma almeno mezzo cieco credo. Anche se, per mia difesa, non è in qualche modo inquietante che XCode non mostri un errore per l'impostazione "errata"?
MODIFICATO ANCORA Ora è divertente ... cambiare il valore finale da -6441 (no scroll) a 6441 abilitato scroll. Ma il mio vecchio amico "troppo contenuto" era tornato, portando a una dimensione del contenuto doppia rispetto a come dovrebbe essere! La soluzione per ottenere lo scorrimento del contenuto corretto era impostare il vincolo finale su ZERO! Questo non è ovvio quando si lavora in Storyboard ma guardando il codice di @Infinity James, è come dovrebbe essere.
contentSize
un UIScrollView
utilizzando solo il layout automatico. Ed è quello contentSize
che definisce quanto puoi scorrere. Quindi dovrai impostarlo manualmente da qualche parte alla fine. Per il resto, è possibile utilizzare i vincoli di layout per impostare i frame della vista l'uno rispetto all'altro.