UIStackView
crea vincoli con una priorità di 1000 (la massima priorità consentita), ovvero UILayoutPriorityRequired
. Il layout automatico è necessario per soddisfare questi vincoli, se possibile.
Il vincolo sulla priorità "alta" (UILayoutPriorityDefaultHigh == 750
, presumo) è in conflitto con i vincoli richiesti della vista dello stack, pertanto il layout automatico ignorerà il vincolo.
Se si imposta la priorità del vincolo su 1000, il layout automatico non sarà in grado di soddisfare tutti i vincoli richiesti. Registrerà un errore e interromperà uno dei vincoli. Non puoi scegliere quale vincolo si rompe.
Si noti che è necessario interrompere solo uno dei tre vincoli per risolvere il sistema e può rompere uno dei tre vincoli in conflitto. Tuttavia, rompere uno qualsiasi dei tre vincoli in conflitto non lascerà un sistema che centra la tua vista. La vista dovrebbe essere allungata o abbracciata a una estremità della vista pila, a seconda di quale vincolo si interrompe il layout automatico. E una versione futura di iOS potrebbe cambiare il layout automatico in modo che un vincolo diverso venga rotto e il layout cambi.
Non è chiaro il motivo per cui si sta tentando di utilizzare una vista stack per centrare la vista. Se hai solo una vista e vuoi centrarla, rendi la sua genitrice una semplice UIView
invece di una UIStackView
, e imposta i vincoli per centrare la tua vista nella vista genitore.
Se si utilizza una vista stack perché a volte si desidera più di una sottoview organizzata nello stack, è necessario aggiungere due viste spaziatore nascoste (una a ciascuna estremità dell'asse) oltre alla vista del contenuto (s). Crea un vincolo di uguale larghezza o uguale altezza tra i distanziatori.
fonte
2015-07-20 19:20:07
"[La vista pila attacca la prima e l'ultima vista allineata con il suo bordo lungo l'asse della pila. Per una pila orizzontale, ciò significa che il bordo anteriore della prima vista sistemata è bloccato sul bordo anteriore della pila e il bordo finale dell'ultima vista sistemata è bloccato sul bordo finale della pila. Per le pile verticali, i bordi superiore e inferiore sono bloccati, rispettivamente.] (Https://developer.apple.com/library/prerelease/ios/documentation/UIKit/Reference/UIStackView_Class_Reference/) "Quindi se inserisci una sottoview , sarà allungato per riempire l'asse dello stack. E 'questo quello che stai vedendo? –
Sì. Quello che non capisco è il motivo per cui questo sovrascrive le dimensioni intrinseche del contenuto, anche se imposto il contenuto che abbraccia la priorità su "alto". –