当设备旋转处于 .PortraitUpsideDown 时,我永远不会收到通知

I never get notified when device rotation is in .PortraitUpsideDown

我唯一的 ViewController.

中有以下方法
override func willAnimateRotationToInterfaceOrientation(toInterfaceOrientation: UIInterfaceOrientation, duration: NSTimeInterval) {
    println("willAnimateRotationToInterfaceOrientation")
    super.willAnimateRotationToInterfaceOrientation(toInterfaceOrientation, duration: duration)

    switch (toInterfaceOrientation) {
    case .Portrait: println(".Portrait")
    case .PortraitUpsideDown: println(".PortraitUpsideDown")
    case .LandscapeRight: println(".LandscapeRight")
    case .LandscapeLeft: println(".LandscapeLeft")
    case .Unknown: println(".Unknown")
    }
}

并且我在项目设置中启用了所有可能的方向

但即使我在模拟器中进行 360 度旋转(我的 iPhone 也是如此),我也永远不会在控制台中打印“.PortraitUpsideDown”。为什么?似乎 Apple 不允许这种轮换。

你需要在你的基地 supportedInterfaceOrientations() 中 return 倒置肖像 UIViewController

方法实现应如下所示。

override func supportedInterfaceOrientations() -> Int {
    return Int(UIInterfaceOrientationMask.All.rawValue)
}