iOS 8 против iOS 7 Автоповорот

Вот простое приложение контроллера с одним представлением:

    - (void)viewDidLoad
    {
      [super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.

      self.view.backgroundColor = [UIColor greenColor];
     }


    - (BOOL)shouldAutorotate
    {
       return YES;
    }

    - (NSUInteger)supportedInterfaceOrientations
   {
        return UIInterfaceOrientationMaskLandscapeRight;
   }

Выходы в iOS 8 такие разные.

Вывод iOS 8

Вывод iOS 7

Это связано с разницей в границах UIWindow в iOS 8 и iOS 7. Как добиться того, чтобы поведение было похоже на iOS 7?


person Deepak Sharma    schedule 08.08.2014    source источник
comment
Является ли ваш контроллер представления корневым контроллером представления окна, которое является ключевым окном?   -  person Zev Eisenberg    schedule 08.09.2014
comment
Зев, у меня точно такая же проблема, и у меня действительно установлен контроллер представления в качестве корневого контроллера представления. Вы знаете об этом больше?   -  person LunaCodeGirl    schedule 01.10.2014
comment
На еще один вопрос, подобный этому, уже был дан ответ. здесь.   -  person pxpgraphics    schedule 07.10.2014


Ответы (2)


Похоже, это ошибка в Xcode 6 или iOS 8. После перехода на раскадровку с xib проблема исчезла.

person Deepak Sharma    schedule 17.09.2014

В IOS8 список возможных ориентаций должен быть в файле Info.plist, метод должен по умолчанию возвращать YES.

Взгляните на обсуждение и документацию ниже:

https://stackoverflow.com/a/24467576/3330421

Ссылка на UIKit: https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIViewController_Class/index.html#//apple_ref/occ/instm/UIViewController/supportedInterfaceOrientations

Когда пользователь меняет ориентацию устройства, система вызывает этот метод на корневом контроллере представления или самом верхнем представленном контроллере представления, который заполняет окно. Если контроллер представления поддерживает новую ориентацию, окно и контроллер представления поворачиваются в новую ориентацию. Этот метод вызывается только в том случае, если метод shouldAutorotate контроллера представления возвращает YES.

Переопределите этот метод, чтобы сообщать обо всех ориентациях, которые поддерживает контроллер представления. Значения по умолчанию для ориентации интерфейса, поддерживаемой контроллером представления, установлены на UIInterfaceOrientationMaskAll для идиомы iPad и UIInterfaceOrientationMaskAllButUpsideDown для идиомы iPhone.

Система пересекает поддерживаемые ориентации контроллера представления с поддерживаемыми ориентациями приложения (как определено файлом Info.plist или методом делегата приложения: supportedInterfaceOrientationsForWindow:), чтобы определить, следует ли повернуть.

person carantes    schedule 04.11.2014