只允许一个视图控制器的所有方向
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")
并且不要忘记在目标->常规->设备方向中允许方向
试试看
执行以下操作:
- 在一般信息屏幕中启用所需的方向
在每个 ViewController
中,用 true 或 false 覆盖自动旋转函数
(true
对于应该旋转的那个,false
对于其他的):
override var shouldAutorotate: Bool {
return true
}
希望对您有所帮助:)
我知道 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")
并且不要忘记在目标->常规->设备方向中允许方向
试试看
执行以下操作:
- 在一般信息屏幕中启用所需的方向
在每个
ViewController
中,用 true 或 false 覆盖自动旋转函数
(true
对于应该旋转的那个,false
对于其他的):override var shouldAutorotate: Bool { return true }
希望对您有所帮助:)