Nota: Questo può essere un duplicato di Subview Doesnt AutoSize When Added to Root View ControllerRegolazione automatica delle dimensioni UIView dopo aver aggiunto alla finestra
Ho un app iPad che passa tra diversi punti di vista nella sua finestra principale. Il codice vista commutazione assomiglia a questo:
- (void)switchToViewController:(UIViewController*)viewController {
if (currentViewController != viewController) {
[currentViewController.view removeFromSuperview];
currentViewController = viewController;
[window addSubview:viewController.view];
}
}
Il problema è che, quando la nuova vista (a UISplitView) appare in orientamento orizzontale, non è dimensionato per riempire l'intera finestra. C'è un grande spazio nero vuoto sulla destra. Sembra che la vista sia larga solo 768 pixel, piuttosto che la larghezza di 1024 pixel della finestra orizzontale.
Se ruoto il dispositivo in verticale e quindi di nuovo in orizzontale, la vista si dimensiona correttamente.
Se il dispositivo è in orientamento verticale, tutto funziona correttamente. Anche UISplitView viene ridimensionato correttamente se è la prima vista che mostro. Il problema si verifica solo se si passa ad esso dopo che è stata mostrata un'altra vista, in orizzontale.
Quindi, c'è un modo per forzare iPhone OS a ridimensionare la vista dopo che è stata aggiunta alla finestra?
Ho provato a chiamare sizeToFit
e setNeedsLayout
. Ho anche provato a impostare la vista bounds
nella finestra bounds
e ho provato a impostare frame
in modo che corrispondesse alla cornice della vista precedente.
Non ci sono problemi qui, perché non si calcola il 20px per la barra di navigazione? – basti