我有一个UIViewController
我覆盖了这两个方法:
override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
return UIInterfaceOrientationMask.Portrait
}
override func shouldAutorotate() -> Bool {
return false
}
我的设备方向选中了Portrait,Landscape Left&右。
我清理了构建文件夹。
我的问题:当我去风景时,应用程序会改变方向。
知道什么是错的。我认为压倒这两种方法应该足够但似乎没有。
答案 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
}