UIViewController改变方向,而不是这样做

时间:2015-10-26 05:13:31

标签: ios swift uiviewcontroller uiinterfaceorientation

我有一个UIViewController我覆盖了这两个方法:

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

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

我的设备方向选中了Portrait,Landscape Left&右。

我清理了构建文件夹。

我的问题:当我去风景时,应用程序会改变方向。

知道什么是错的。我认为压倒这两种方法应该足够但似乎没有。

1 个答案:

答案 0 :(得分:1)

由于您的视图控制器嵌入在UINavigationController中并且仅在相应的视图控制器中覆盖了shouldAutorotate(),因为它检查UINavigationController / UITabBarController的shouldAutoRotate(),因此您将不得不创建UINavigationController的扩展

extension UINavigationController {
    public override func shouldAutorotate() -> Bool {
        return visibleViewController.shouldAutorotate()
    }
}

并且在相应的视图控制器中,根据您的要求覆盖方向的任何位置覆盖shouldAutoRotate()

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