Примечание. Это может быть дубликат Subview Doesnt AutoSize при добавлении в контроллер корневого представления
У меня есть приложение для iPad, которое переключается между разными видами в главном окне. Код переключения вида выглядит следующим образом:
- (void)switchToViewController:(UIViewController*)viewController {
if (currentViewController != viewController) {
[currentViewController.view removeFromSuperview];
currentViewController = viewController;
[window addSubview:viewController.view];
}
}
Проблема заключается в том, что, когда новый вид (UISplitView) появляется в альбомной ориентации, он не имеет размера для заполнения всего окна. Справа - большое пустое черное пространство. Похоже, что представление имеет ширину всего 768 пикселей, а не 1024-пиксельную ширину ландшафтного окна.
Если я повернул устройство к портрету, а затем вернулся к пейзажу, вид будет выглядеть правильно.
Если устройство находится в портретной ориентации, все работает нормально. UISplitView также получает правильный размер, если это первый вид, который я показываю. Проблема возникает только в том случае, если я переключаюсь на нее после отображения другого вида в ландшафте.
Итак, есть ли способ заставить iPhone OS изменить размер представления после его добавления в окно?
Я пробовал звонить sizeToFit
и setNeedsLayout
. Я также попытался настроить представление bounds
на окно bounds
, и я попытался настроить frame
на соответствие предыдущему кадру представления.