2013-12-08 10 views
13

Ho modificato a livello di programmazione un vincolo di autolayout. Ha effetto su una certa vista, ma le altre viste che sono limitate da altri vincoli a quella vista, non cambiano le loro posizioni. Esiste un metodo "updateAllConstrains"?Come posso eseguire il trigger per aggiornare tutti i vincoli di autolayout?

+0

Forse si coud pubblicare uno schermo dei vostri vincoli: l'unico pensiero che posso supporre è che queste altre viste siano in qualche modo limitate ad altri elementi da vincoli non estensibili. – nikans

risposta

2

Il problema era che i vincoli non erano impostati correttamente, e in questo caso non può essere d'aiuto il setNeedsLayout o updateConstraintsIfNeeded.

28

chiamata questi due metodi per la vista che si desidera essere aggiornato:

-setNeedsLayout 
-layoutIfNeeded 

il primo dice al sistema di layout che questo punto di vista ha bisogno di essere disposti, perché ha alcune modifiche e tutto dovrebbe essere ricalcolato. Il secondo impone il sistema di layout da eseguire ora, il sistema di layout viene attivato in momenti specifici durante il runtime, con questo metodo si sta dicendo: "fallo ora".

+0

Posso modificare i vincoli di un'immageview tramite UIButton clic? Se è così, come spiegami come sono nuovo in questo. – Sofeda

+0

Totalmente d'accordo con questa risposta! – Hamsternik

0

migliore che ho trovato è:

  1. selezionare gli elementi che si desidera "pop" di nuovo al vostro vincoli

  2. Menu principale: Editor/Aggiornamento Frames (o /) scorciatoia: comando + opzione + =

Speriamo che aiuta

Problemi correlati