Swift 方向検出、UIDeviceOrientationとUIInterfaceOrientation
デバイスというかアプリの方向検出
机の上に置いた状態で検出は「UIDevice.current.orientation」は出来ない。
「UIApplication.shared.windows.first?.windowScene?.interfaceOrientation」を使用する。
比較コード
print("UIApplication.shared.windows.first?.windowScene?.interfaceOrientation") print("isPortrait:\(UIApplication.shared.windows.first?.windowScene?.interfaceOrientation.isPortrait)") print("isLandscape:\(UIApplication.shared.windows.first?.windowScene?.interfaceOrientation.isLandscape)") print("rawValue:\(UIApplication.shared.windows.first?.windowScene?.interfaceOrientation.rawValue)") print("UIDevice.current.orientation") print("isPortrait:\(UIDevice.current.orientation.isPortrait)") print("isLandscape:\(UIDevice.current.orientation.isLandscape)") print("rawValue:\(UIDevice.current.orientation.rawValue)")
UIDevice.current.orientationはUIDeviceOrientation。
UIApplication.shared.windows.first?.windowScene?.interfaceOrientationはUIInterfaceOrientation。
結果
UIApplication.shared.windows.first?.windowScene?.interfaceOrientation isPortrait:Optional(false) isLandscape:Optional(true) rawValue:Optional(3) UIDevice.current.orientation isPortrait:false isLandscape:false rawValue:5