获取当前界面方向的不同方法?

有三种方法可以获取我所知道的当前界面方向:

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

他们之间有什么不同?

self.interfaceOrientation返回self.interfaceOrientation ,接口的当前方向。 它是UIViewController中的一个属性,只能在UIViewController类中访问这个属性。

[[UIApplication sharedApplication] statusBarOrientation]返回[[UIApplication sharedApplication] statusBarOrientation] ,即应用程序状态栏的当前方向。 您可以在应用程序的任何位置访问该属性。 我的经验表明,这是更有效的方法来检索真实的界面方向。

[[UIDevice currentDevice] orientation]返回UIDeviceOrientation ,设备方向。 您可以在应用程序的任何位置访问该属性。 但是请注意,UIDeviceOrientation并不总是UIInterfaceOrientation。 例如,当您的设备在普通桌子上时,您可能会收到意外的值。

[[UIApplication sharedApplication] statusBarOrientation] – 它始终等于四个值之一:纵向,横向左侧,右侧横向和上下纵向。

[[UIDevice currentDevice] orientation] – 这个等于标准的四个值,还有:未知的,正面的或正面的。

[[UIApplication sharedApplication] statusBarOrientation] – 更喜欢获取界面方向。

所有视图控制器都有这个function

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

或者你可以使用状态栏方向

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

在iOS 9中工作:)