禁用自动旋转

时间:2016-03-20 20:36:35

标签: ios swift

我是Xcode和Swift的新手。 (Xcode 7.2,Swift 2.0)我的第一个项目包含一个导航控制器和3个其他视图控制器:A,B和C.我不希望任何视图自动旋转。我希望A和B永久保持纵向,C永久保存在风景中。一般 - >部署信息 - >设备方向我已经检查了纵向和横向。在每个VC中,我在viewDidLoad中都有这样的代码。

let value = UIInterfaceOrientation.LandscapeLeft.rawValue
UIDevice.currentDevice().setValue(value, forKey: "orientation")

以及以下方法......

override func shouldAutorotate() -> Bool {
    return false
}

每个视图都以所需的方向开始。然而,这种令人不快的东西会自动旋转。

2 个答案:

答案 0 :(得分:1)

你不能做你正在描述的事情。导航控制器中不同深度的不同视图控制器不能具有不同的固定方向。它不受支持。

为视图控制器提供与前一个视图控制器不同的固定方向的唯一方法是作为呈现的视图控制器,而不是视图控制器推送到导航控制器上#39; s stack。

此外,这一行:

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

可能会在App Store中拒绝您的应用。您不能像这样设置设备的方向。

答案 1 :(得分:-2)

第一种方式:如果您不想在项目中旋转任何VC,只需取消选中“目标”窗口中的“设备方向”属性即可。 enter image description here

第二种方式:如果你正在使用 UINavigationController ,如果你想调用shouldAutorotate()函数,你应该创建一个自定义UINavigationController 类并导入以下代码,

像这样,在 customNavigationController 类中,

override func shouldAutorotate() -> Bool {
   return false
}

通过这种方式,您可以更改为另一个NavigationController的viewControllers以允许oriantations