如何禁用并启用swift自动旋转?
问题描述:
关于常规设置,我允许肖像和landscapeleft,landscaperight模式。我想关闭风景模式。在viewController我写这个代码:如何禁用并启用swift自动旋转?
override func shouldAutorotate() -> Bool {
return false
}
但是,自动旋转工程忽略此功能。如何在swift上禁用和启用自动旋转? IOS编程
答
它可能是正确的代码,但不是在正确的视图控制器。例如,如果View Controller嵌入到UINavigationController中,导航控制器仍然可以旋转,导致View Controller仍然旋转。这真的取决于你的具体情况。
答
我有同样的问题,我已经修复了。
后续
信息 - >自定义IOS目标属性 - >支持接口Orinetations。并删除[删除 - 景观(左home键),风景(右home键),风景(上home键)]![1]
这将帮助你
答
你可以做到这一点通过创建子类UINavigationController的和内部的,覆盖应自动旋转功能,那么
- 返回false为要在其中禁用自转
-
还真的要在其中自转的viewControllers的viewControllers
import UIKit class CustomNavigationController: UINavigationController { override func shouldAutorotate() -> Bool { if !viewControllers.isEmpty { // Check if this ViewController is the one you want to disable roration on if topViewController!.isKindOfClass(ViewController) { //ViewController is the name of the topmost viewcontroller // If true return false to disable it return false } } // Else normal rotation enabled return true } }
如果你想在整个导航控制器禁用自动旋转,如果条件删除并返回false始终
嗨乔希,是我嵌入式导航视图控制器我的视图控制器。那么我应该在哪里放这个代码? –
子类uinavigationcontroller并把它放在那里。基本上你只需要检查顶部的视图控制器是否是你想旋转的视图控制器。 –
我不明白当你说“检查顶部的视图控制器”我把autorotate在子类uinavigationcontroller上返回false。我自动转换现在不起作用。那是我想要的。我把autorotate返回true后,如果我的moviewplayer开始玩。当我去全屏自动化工作。当我退出全屏时,它不起作用。我不明白这是为什么? –