statusBarOrientation何时与UIDeviceOrientation不同?

时间:2017-03-12 06:17:23

标签: uiinterfaceorientation uideviceorientation

以下代码中的断言何时会触发?

let orien = UIApplication.shared.statusBarOrientation

UIDevice.current.beginGeneratingDeviceOrientationNotifications()

switch UIDevice.current.orientation {
case .portrait: assert(orien == .portrait)
case .portraitUpsideDown: assert(orien == .portraitUpsideDown)
case .landscapeLeft: assert(orien == .landscapeRight)
case .landscapeRight: assert(orien == .landscapeLeft)
default: return
}

1 个答案:

答案 0 :(得分:1)

当您的应用不支持所有四种方向时。 UIDeviceOrientation会反映设备的方向,与您的应用是否支持该方向无关。 statusBarOrientation将始终是您支持的方向之一。

因此,例如,如果您的设备是纵向倒置,但您的应用不支持该方向,则UIDeviceOrientation将为portraitUpsideDown,但statusBarOrientation将为landscapeLeft(如果这是设备在纵向之前的方向)颠倒)。

请注意,iPhone上的旋转锁定不会使断言高于火焰 - statusBarOrientation和UIDeviceOrientation都会报告为纵向,与实际方向无关,但它们彼此一致。