Различные способы получения текущей ориентации интерфейса? - PullRequest
63 голосов
/ 01 ноября 2011

Есть 3 способа получения текущей ориентации интерфейса, о которой я знаю:

  • self.interfaceOrientation
  • [[UIApplication sharedApplication] statusBarOrientation]
  • [[UIDevice currentDevice] orientation]

В чем различия между ними?

Ответы [ 3 ]

112 голосов
/ 03 ноября 2011

self.interfaceOrientation возвращает UIInterfaceOrientation, текущую ориентацию интерфейса.Это свойство в UIViewController, доступ к нему можно получить только в классах UIViewController.

[[UIApplication sharedApplication] statusBarOrientation] возвращает UIInterfaceOrientation, текущую ориентацию строки состояния приложения.Вы можете получить доступ к этому свойству в любой точке вашего приложения.Мой опыт показывает, что это более эффективный способ получения реальной ориентации интерфейса.

[[UIDevice currentDevice] orientation] возвращает UIDeviceOrientation , ориентацию устройства.Вы можете получить доступ к этому свойству в любой точке вашего приложения.Но обратите внимание, что UIDeviceOrientation не всегда является UIInterfaceOrientation.Например, когда ваше устройство находится в простой таблице, вы можете получить неожиданное значение.

25 голосов
/ 03 ноября 2011

[[UIApplication sharedApplication] statusBarOrientation] - всегда равняется одному из четырех значений: книжное, альбомное, горизонтальное и альбомное.

[[UIDevice currentDevice] orientation] - это равняется стандартным четырем значениям, а также: неизвестнолицевой стороной вверх или вниз.

[[UIApplication sharedApplication] statusBarOrientation] - более предпочтительный способ ориентации интерфейса.

1 голос
/ 28 сентября 2015

Все контроллеры вида имеют эту функцию

   override func didRotateFromInterfaceOrientation(fromInterfaceOrientation: UIInterfaceOrientation) {
          //fromInterfaceOrientation.isLandscape
   }

или вы можете использовать ориентацию строки состояния

   if UIApplication.sharedApplication().statusBarOrientation == UIInterfaceOrientation.Portrait {
        //
   }

Работает в iOS 9 :)

...