获取当前界面方向的不同方法?
是有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]
- 更喜欢获取界面方向的方法。
此外,'[[的UIDevice currentDevice] orientation]'“...总是返回0,除非已经通过调用beginGeneratingDeviceOrientationNotifications启用了方向通知。” (Docs。) – Olie
12偏头痛和5溃疡后,我可以证实'[[UIApplication sharedApplication] statusBarOrientation]'是一种更可靠和简单的检测和管理方向变化的方法。 –
所有视图控制器有此功能
override func didRotateFromInterfaceOrientation(fromInterfaceOrientation: UIInterfaceOrientation) {
//fromInterfaceOrientation.isLandscape
}
或可以用户状态栏取向
if UIApplication.sharedApplication().statusBarOrientation == UIInterfaceOrientation.Portrait {
//
}
作品在IOS 9 :)
谢谢,我现在很清楚! –
关于界面方向的一个更多答案 - http://stackoverflow.com/a/3897243/194544 – beryllium
+1,非常好的解释:)) – mAc