Ho usato i vincoli di autolayout dallo storyboard. Tuttavia, in alcuni casi, voglio calcolare l'altezza dinamica della sottoview. Lo codice in viewDidAppear(), funziona bene perché questo metodo viene chiamato dopo che tutti i frame di visualizzazione sono stati impostati dai vincoli di layout. Il problema qui è che posso vedere il frame impostato dai vincoli per mezzo secondo. E poi il codice riorganizza la vista.Quando i vincoli di autolayout impostano i frame durante il ciclo di vita del controller di visualizzazione?
Sono venuto a conoscenza di viewDidLayout() che viene chiamato dopo i vincoli ha impostato la cornice in modo che possa cambiare. Ma non funziona. È come questo metodo viene chiamato prima che vengano usati i vincoli.
'viewWillAppear' non è un" evento una tantum "se il suddetto controller di visualizzazione si sposta tra l'essere e non il controller di visualizzazione più in alto. Credo che il metodo a cui ti riferisci sia 'viewDidLoad' –
Vero che non si tratta di un" evento singolo ". Potrebbe essere necessario aggiungere il brutto check come in "viewWillLayoutSubviews". 'viewDidLoad' non è pertinente alla domanda in quanto le visualizzazioni secondarie potrebbero non essere necessariamente caricate a quest'ora. Prova tu stesso. – GoGreen
No, sei corretto. La mia risposta è stata più una correzione al tuo commento sul metodo che viene chiamato dopo che la vista del controller della vista è stata caricata rispetto alla domanda iniziale dell'OP. Mie scuse. Hai ragione, però, usare booleani per cose del genere è sempre disgustoso, ma temo che sia una soluzione rapida al problema che l'OP sta avendo. –