Uwaga: To może być duplikat Subview Doesnt AutoSize When Added to Root View ControllerAutomatycznie Dobór UIView po dodaniu do okna
Mam aplikację na iPada, który przełącza pomiędzy różnymi widokami w jego oknie głównym. Kod przełączanie widoku wygląda następująco:
- (void)switchToViewController:(UIViewController*)viewController {
if (currentViewController != viewController) {
[currentViewController.view removeFromSuperview];
currentViewController = viewController;
[window addSubview:viewController.view];
}
}
Problemem jest to, że gdy nowy widok (a UISplitView) pojawia się w orientacji poziomej, nie jest zaprojektowany, aby wypełnić całe okno. Po prawej stronie jest duża pusta czarna przestrzeń. Wygląda na to, że widok ma tylko 768 pikseli szerokości, a nie 1024-pikselową szerokość okna krajobrazu.
Po obróceniu urządzenia do portretu, a następnie z powrotem do krajobrazu, wielkość widoku jest poprawna.
Jeśli urządzenie znajduje się w orientacji pionowej, wszystko działa poprawnie. UISplitView zostanie również poprawnie zwymiarowany, jeśli jest to pierwszy wyświetlany widok. Problem występuje tylko wtedy, gdy przełączę się na niego po wyświetleniu innego widoku w orientacji poziomej.
Czy jest jakiś sposób na wymuszenie na systemie iPhone OS zmiany rozmiaru widoku po dodaniu go do okna?
Próbowałem dzwonić pod numer sizeToFit
i setNeedsLayout
. Próbowałem również ustawić widok bounds
do okna bounds
i próbowałem ustawić frame
, aby dopasować ramkę poprzedniego widoku.
Nie napotykasz tutaj problemów, ponieważ nie obliczysz 20px dla paska nawigacji? – basti