如何为UINavigationController的根视图控制器禁用自动旋转?

时间:2016-03-18 10:56:44

标签: ios objective-c swift user-interface

我需要在我的应用程序中支持所有界面方向掩码。 某些视图控制器不应该自动旋转(它仅支持纵向方向),但应用程序仍需要支持所有方向。 Expected result

我尝试在UINavigationController中设置shouldAutorotate = true; supportedInterfaceOrientations = All,在根视图控制器中设置shouldAutorotate = false; supportedInterfaceOrientations = Portrait。但它没有用。

3 个答案:

答案 0 :(得分:0)

您可以在仅支持纵向模式的viewControllers中使用它

override func shouldAutorotate() -> Bool {
    if (UIDevice.currentDevice().orientation == UIDeviceOrientation.Portrait ||
        UIDevice.currentDevice().orientation == UIDeviceOrientation.PortraitUpsideDown ||
        UIDevice.currentDevice().orientation == UIDeviceOrientation.Unknown) {
            return true;
    } else {
        return false;
    }
}

override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
    return UIInterfaceOrientationMask.Portrait
}

答案 1 :(得分:0)

由于每个视图控制器都支持不同的方向,您可以这样做:

1)在项目的“常规”选项卡中,选择您需要应用程序支持的方向。 for reference click here

2)现在,在每个视图控制器中添加以下代码:

   - (UIInterfaceOrientationMask) supportedInterfaceOrientations {

    return UIInterfaceOrientationMaskPortrait;
}

在此方法中返回您想要的特定视图控制器的方向。

答案 2 :(得分:0)

您必须按照以下步骤设置Xcode设置以处理旋转:

项目>目标>一般>部署信息>设备方向> (复选标记)人像

希望这对你有所帮助。