只允许一个视图控制器的所有方向

Allow all orientations for only one view controller

我知道 here, here and here 中已经有人问过这个问题。我尝试了所有可能的方法,但没有成功。

我正在尝试在 Swift (iOS 8) 中开发一个应用程序,其中只有一个视图控制器可以在所有方向上查看,其他视图控制器只能纵向查看。

为此,我在 Target->General->Device Orientation 中仅启用了 Portrait 模式(因为我希望应用程序仅在纵向模式下运行,但一个视图控制器除外)。

我已将以下代码添加到我想在所有方向上操作的视图控制器:

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

override func preferredInterfaceOrientationForPresentation() -> UIInterfaceOrientation {
    return UIInterfaceOrientation.LandscapeLeft;
}

override func shouldAutorotate() -> Bool {
    return true;
}

但无法在横向模式下旋转它。

在您想要的所有方向的特定 viewController 中尝试此操作,在 viewWillAppear:

 let value = UIInterfaceOrientationMask.All.rawValue

 UIDevice.currentDevice().setValue(value, forKey: "orientation") 

并且不要忘记在目标->常规->设备方向中允许方向

试试看

执行以下操作:

  1. 在一般信息屏幕中启用所需的方向
  2. 在每个 ViewController 中,用 true 或 false 覆盖自动旋转函数
    true 对于应该旋转的那个,false 对于其他的):

    override var shouldAutorotate: Bool {
        return true
    }
    

希望对您有所帮助:)