Ho un UIView personalizzato che ha un frame dedicato e impostato manualmente per l'orientamento verticale e orizzontale perché i VM non funzionano nel mio caso.Come forzare layoutsubviews di UIView.
Ho impostato questa cornice in:
- (void)viewWillAppear:(BOOL)animated
e funziona come previsto.
Il mio problema ora è che il mio UIView ha anche delle sottoview che hanno anche una posizione dedicata per il ritratto/paesaggio.
posiziono questi subviews in:
- (void)layoutSubviews
Se ora lascio il mio viewController in esempio orientamento verticale, ruotare in orizzontale su un'altra viewController e quindi tornare a questa vistaController Vedo che la mia vista è stata ridimensionata correttamente, ma le sottoview della mia vista, che vengono posizionate in layoutSubviews non vengono riposizionate ma vengono ridimensionate in modo animato dopo la vista è già apparsa.
non faccio niente in viewDidAppear e ho già provato a chiamare
- (void)layoutIfNeeded
Così come:
- (void)setNeedsLayout
In viewWillAppear, ma non sembra cambiare nulla.
Qualche idea su cosa sto facendo male?
Grazie.
questo metodo sembra funzionare meglio della semplice chiamata self.view.layoutSubviews() –
Chiamata layoutSubviews utilizzerà qualsiasi vincolo impostato per organizzare le visualizzazioni secondarie. Se ciò che stai facendo non utilizza i vincoli, dovrai impostare setNeedsLayout e quindi layoutIfNeeded per forzare immediatamente un aggiornamento del layout. – Toby