2015-02-17 12 views
5

Sto utilizzando l'autolayout per parti dell'interfaccia utente. Quando controllo la larghezza della vista in viewWillAppear, la larghezza non è ancora stata aggiornata. Viene aggiornato dopo il secondo richiamo a - (void) updateViewConstraints. Il problema è che ho impostato le mie parti dell'interfaccia utente (utilizzando la molla e le aste per motivi legacy) in base a questa larghezza in viewWillAppear. Quando è il momento giusto per configurare questa interfaccia utente legacy che utilizza un parametro di larghezza?Layout automatico = ViewWillAppear ha la larghezza errata della vista

grazie

+0

Just 'view.layoutIfNeeded()' nella parte superiore del tuo 'viewWillAppear' – onmyway133

risposta

12

layout succede dopo viewWillAppear ritorni. Fatelo in viewDidLayoutSubviews (nel vostro controller di visualizzazione) o in layoutSubviews (nella sottoclasse della vista personalizzata). In ogni caso, assicurati di chiamare prima il numero super.

Un altro modo è forzare il layout inviando [view layoutIfNeeded]. Quindi puoi aggiungere sottoview e impostare le loro molle e montanti. Il sistema eseguirà nuovamente il layout (al suo solito orario) perché hai aggiunto le visualizzazioni secondarie.

+0

suona bene! Grazie – FatalError

Problemi correlati