Странный ландшафт uitabbarcontroller запуск приложения
-
16-09-2019 - |
Вопрос
Мое приложение довольно простое, но у меня есть некоторые проблемы, когда оно начинается. Я установил в info.plist, чтобы быть ландшафтным, но, похоже, он игнорирует порядок. Фактически, когда приложение загружает симулятор, оценивается, но затем оно возвращается в портретном режиме.
Это иерархия взглядов и контроллеров:
- MainViewController (расширяет uitabbarcontroller, чтобы переопределить weadAutorotateTeCainfaceOrientation :)
- Три расширенных uitableViewControllers в качестве вкладок (также они имеют правильную установку supautoroteTeTointerfaceorientation).
Если я вроде как вынужден ориентацию устройства на ландшафт с:
[Uidevice currentDevice] Сеткация: uiinterfaceorientationlandscaperight];
Затем для мгновения симулятор мигает в портретном режиме, а затем оно идет в пользу. Проблема в том, что таким образом начинается анимация автоматического ротации, что я не могу провести. Я просто хочу фиксированного, ландшафтного применения.
Какие -нибудь подсказки? Я что-то упускаю?
Решение
Попробуйте следующее. Не уверен, почему это не работает для вас
1) Установите ключ UIInterfaceoratation
в UiInterfaceorientationLandScapeRight в вашем файле .plist
2) переопределить свой метод uitabbarcontroller shopautorotateTointerFaceoratation (); В следующем код имеет дело только с вкладками Zero и One, и только с одним контроллером: если у вас есть контроллер навигации, и вы хотите управлять различными контроллерами, которые могут быть в стеке, вы должны соответственно изменить код
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
BOOL tabZeroController = [[[self.viewControllers objectAtIndex:0] visibleViewController] isKindOfClass:[YourTabZeroTableViewController class]];
BOOL tabOneController = [[[self.viewControllers objectAtIndex:1] visibleViewController] isKindOfClass:[YourTabOneTableViewController class]];
if(self.selectedIndex == 0 && tabZeroController)
return (interfaceOrientation == UIInterfaceOrientationLandscapeRight);
if(self.selectedIndex == 1 && tabOneController)
return (interfaceOrientation == UIInterfaceOrientationLandscapeRight);
return NO;
}
2) Настройка
[[UIDevice currentDevice] setOrientation:UIInterfaceOrientationLandscapeRight];
В методе приложения вашего делегата.
3) Добавьте следующее обязательство в своих контроллерах.
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation == UIInterfaceOrientationLandscapeRight);
}
4) Запустите приложение на вашем устройстве и убедитесь, что оно работает должным образом, используя элемент аппаратного меню, вращающийся влево и поверните направо. Вы должны увидеть дисплей в ландшафтном режиме.
Другие советы