Проблемы с ориентацией интерфейса и UITabBarController
-
26-09-2019 - |
Вопрос
Быстрая проблема:
У меня есть UITabBarController с двумя навигационными контроллерами [назовем их левым и правым контроллером]
На выбранном по умолчанию левом контроллере я могу нажать новый контроллер представления, который определяет ориентацию интерфейса.
На правом контроллере я могу нажать тот же контроллер представления, но он не определит ориентацию интерфейса или, если уж на то пошло, он вообще не войдет в метод mustAutoRotateInterface T___T
Хааалп!!
Если это имеет какое-либо значение, контроллер представления, который я нажимаю, использует свойство HidesBottomBarWhenPushed.
Решение
Ваш UitabbarController реализует автоматическое вращение? Любой дочерний воспроизведение контроллеров, который хочет реализовать авторотату, должен иметь свой родитель внедрить авторотату.
Другие советы
Скорее всего это ваша проблема:
Контроллеры стержней вкладок по умолчанию поддерживают ориентацию на портрету и не вращаются на ландшафтную ориентацию если все контроллеры корневого представления не поддерживают такую ориентацию.Когда происходит изменение ориентации устройства, контроллер стержня вкладок запрашивает массив контроллеров представления.Если кто -либо из них не поддерживает ориентацию, контроллер стержня вкладок не изменяет свою ориентацию.
Решение состоит в том, чтобы переопределить следующий метод на каждом контроллере представления, ведущем к вашему представлению:
- (BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)orientation {
return YES;
}
Например, вместо использования значения по умолчанию UITabBarController
в IB замените его собственным подклассом, содержащим только указанный выше метод.
Я немного опаздываю на вечеринку на этом, но я бежал в проблему с Autolotation при запуске для приложения Bar Tab Bar, который я всегда хотел работать в портрете.
Plist app имеет необходимые настройки для начала и разрешены только портретным режимом, и все контроллеры моего представления разрешают только портретным режимом. Тем не менее, когда я начал приложение, проведение моего iPhone в ландшафте, приложение началось в портрете, но затем повернута к ландшафту!
А не подкласс UITabBarController
, Я просто переполнен UITabBarController
С. shouldAutorotateToInterfaceOrientation:
Способ с использованием категории на классе UITabBarController
. Отказ Я включил этот код в моем приложении делегата:
@implementation UITabBarController(UITabBarControllerCategory)
-(BOOL)shouldAutorotateToInterfaceOrientation:
(UIInterfaceOrientation)toInterfaceOrientation
{
return (toInterfaceOrientation == UIInterfaceOrientationPortrait);
}
@end
Работает красиво, и довольно легкий.