Итак, я просмотрел несколько страниц и нашел здесь несколько ответов о переполнении стека, но, похоже, ничего не работает.
У меня есть контроллер корневого представления. Он имеет 2 дочерних контроллера просмотра. (базовый вид контента и наложение меню).
Цель состоит в том, чтобы представление содержимого реагировало на изменение ориентации, но меню наложения отображалось только в портретной ориентации (выбор дизайна имеет гораздо больше смысла в контексте).
В моем корневом VC я добавил свои дочерние представления следующим образом:
self.contentVC = [DELEGATE.storyboard instantiateViewControllerWithIdentifier:@"content"];
[self addChildViewController:self.contentVC];
self.contentVC.view.frame = self.view.bounds;
[self.view addSubview:self.contentVC.view];
[self.contentVC didMoveToParentViewController:self];
И root VC имеет следующие объявленные методы:
-(NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskAll;
}
-(BOOL)shouldAutomaticallyForwardAppearanceMethods{
return YES;
}
-(BOOL) shouldAutomaticallyForwardRotationMethods{
return YES;
}
-(BOOL)shouldAutorotate
{
return YES;
}
В моем conentVC:
-(NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskAll;
}
-(BOOL)shouldAutorotate
{
return YES;
}
И в меню ВК:
-(NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskPortrait;
}
-(BOOL)shouldAutorotate
{
return NO;
}
Я программно решил это, просто заставив rootVC вызывать метод для contentVC, который позиционирует и поворачивает элементы, и сейчас это работает нормально. Меня больше всего беспокоит то, что если Apple добавит больше размеров экрана, автоповорот будет гораздо более адаптируемым. Есть ли решение для автоповорота, которое мне не хватает?
Как уже говорилось, я уже проверил несколько сообщений и знаю, что подобные вещи обсуждались, но все решения, которые я нашел, похоже, не работают.