我有一个UIViewController
,我在其中覆盖了这两种方法:
override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
return UIInterfaceOrientationMask.Portrait
}
override func shouldAutorotate() -> Bool {
return false
}
我的设备方向在纵向,横向和横向上打勾。
我清理了构建文件夹。
我的问题是:当我去风景时,该应用会更改方向。
不知道怎么了。我认为重写这两种方法就足够了,但似乎还不够。
最佳答案
由于您的视图控制器嵌入在UINavigationController中,并且单独覆盖相应视图控制器中的shouldAutorotate()不会起作用,因为它会检查UINavigationController / UITabBarController的shouldAutoRotate(),因此您将必须创建UINavigationController的扩展
extension UINavigationController {
public override func shouldAutorotate() -> Bool {
return visibleViewController.shouldAutorotate()
}
}
并且在相应的视图控制器中,无论您要根据需求锁定方向,都应覆盖shouldAutoRotate()
override func shouldAutorotate() -> Bool {
return false
}
关于ios - UIViewController更改方向,但告诉您不要这样做,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33338867/