私が知っている現在のインターフェイスの向きを取得するには、3つの方法があります。
self.interfaceOrientation
[[UIApplication sharedApplication] statusBarOrientation]
[[UIDevice currentDevice] orientation]
それらの違いは何ですか?
self.interfaceOrientation
は、インターフェイスの現在の方向であるUIInterfaceOrientationを返します。これはUIViewControllerのプロパティであり、UIViewControllerクラスでのみこれにアクセスできます。
[[UIApplication sharedApplication] statusBarOrientation]
は、アプリケーションのステータスバーの現在の方向であるUIInterfaceOrientationを返します。アプリケーションの任意のポイントでそのプロパティにアクセスできます。私の経験では、実際のインターフェイスの向きを取得するより効果的な方法であることを示しています。
[[UIDevice currentDevice] orientation]
は、IDeviceOrientation、デバイスの向きを返します。アプリケーションの任意のポイントでそのプロパティにアクセスできます。ただし、UIDeviceOrientationは常にUIInterfaceOrientationではないことに注意してください。たとえば、デバイスがプレーンテーブルにある場合、予期しない値を受け取る可能性があります。
[[UIApplication sharedApplication] statusBarOrientation]
-常に、縦、左、横、右、上下の4つの値のいずれかに等しくなります。
[[UIDevice currentDevice] orientation]
-これは標準の4つの値に相当し、不明、表向き、または裏向きです。
[[UIApplication sharedApplication] statusBarOrientation]
-インターフェースの向きを取得するより好ましい方法です。
すべてのView Controllerにこの機能があります
override func didRotateFromInterfaceOrientation(fromInterfaceOrientation: UIInterfaceOrientation) {
//fromInterfaceOrientation.isLandscape
}
または、ステータスバーの向きを使用できます
if UIApplication.sharedApplication().statusBarOrientation == UIInterfaceOrientation.Portrait {
//
}
IOS 9で動作します:)