Вопрос

Мое приложение довольно простое, но у меня есть некоторые проблемы, когда оно начинается. Я установил в 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) Запустите приложение на вашем устройстве и убедитесь, что оно работает должным образом, используя элемент аппаратного меню, вращающийся влево и поверните направо. Вы должны увидеть дисплей в ландшафтном режиме.

Другие советы

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top