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

Swift

Posted by shi-n