Есть 3 способа получить текущую ориентацию интерфейса, о которой я знаю:
-
self.interfaceOrientation
-
[[UIApplication sharedApplication] statusBarOrientation]
-
[[UIDevice currentDevice] orientation]
Каковы различия между ними?
Есть 3 способа получить текущую ориентацию интерфейса, о которой я знаю:
self.interfaceOrientation
[[UIApplication sharedApplication] statusBarOrientation]
[[UIDevice currentDevice] orientation]
Каковы различия между ними?
self.interfaceOrientation
возвращает UIInterfaceOrientation, текущую ориентацию интерфейса. Это свойство в UIViewController, вы можете получить доступ к этому только в классах UIViewController.
[[UIApplication sharedApplication] statusBarOrientation]
возвращает UIInterfaceOrientation, текущую ориентацию строки состояния приложения. Вы можете получить доступ к этому свойству в любой точке вашего приложения. Мой опыт показывает, что это более эффективный способ получить реальную ориентацию интерфейса.
[[UIDevice currentDevice] orientation]
возвращает UIDeviceOrientation ориентацию устройства. Вы можете получить доступ к этому свойству в любой точке вашего приложения. Но обратите внимание, что UIDeviceOrientation не всегда является UIInterfaceOrientation. Например, когда ваше устройство находится на простой таблице, вы можете получить неожиданное значение.
[[UIApplication sharedApplication] statusBarOrientation]
- он всегда равен одному из четырех значений: портрет, пейзаж слева, пейзаж справа и портрет вверх ногами.
[[UIDevice currentDevice] orientation]
- этот показатель равен стандартным четырем значениям, а также: неизвестно, вверх или вниз.
[[UIApplication sharedApplication] statusBarOrientation]
- более предпочтительный способ получить ориентацию интерфейса.
Все контроллеры представлений имеют эту функцию
override func didRotateFromInterfaceOrientation(fromInterfaceOrientation: UIInterfaceOrientation) {
//fromInterfaceOrientation.isLandscape
}
или вы можете указать ориентацию строки состояния
if UIApplication.sharedApplication().statusBarOrientation == UIInterfaceOrientation.Portrait {
//
}
Работает в iOS 9:)