【问题标题】:Disable auto rotation禁用自动旋转
【发布时间】:2016-03-21 05:03:01
【问题描述】:

我是 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
}

每个视图都以所需的方向开始。然而这该死的东西一直在自动旋转。

【问题讨论】:

    标签: ios swift


    【解决方案1】:

    你不能做你所描述的。导航控制器中不同深度的不同视图控制器不能有不同的固定方向。不支持。

    为视图控制器提供与前一个视图控制器不同的固定方向的唯一方法是作为 呈现 视图控制器,而不是将视图控制器 推送 到导航控制器的堆栈。

    另外,这一行:

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

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

    【讨论】:

      【解决方案2】:

      第一种方法:如果您不想在项目中旋转任何 VC,只需取消选中 Targets 窗口中的 Device Orientation 属性。

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

      像这样,在您的 customNavigationController 类中,

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多