以下代码中的断言何时会触发?
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
}
答案 0 :(得分:1)
当您的应用不支持所有四种方向时。 UIDeviceOrientation会反映设备的方向,与您的应用是否支持该方向无关。 statusBarOrientation将始终是您支持的方向之一。
因此,例如,如果您的设备是纵向倒置,但您的应用不支持该方向,则UIDeviceOrientation将为portraitUpsideDown,但statusBarOrientation将为landscapeLeft(如果这是设备在纵向之前的方向)颠倒)。
请注意,iPhone上的旋转锁定不会使断言高于火焰 - statusBarOrientation和UIDeviceOrientation都会报告为纵向,与实际方向无关,但它们彼此一致。