This question already has answers here:
locking orientation does not work on ipad ios 8 swift xcode 6.2
(6个答案)
5年前关闭。
^上面根本没有答案...存在问题,无法为导航 Controller 中的特定(并非全部) View Controller 禁用自动旋转。类似的问题并不针对特定 View Controller 禁用自动旋转的能力,而是针对导航 Controller 内部所有 View Controller 禁用自动旋转的能力。我的导航 Controller 包含一些我想要自动旋转的VC和其他我不想自动旋转的VC。没有现有的问题可以令人满意地回答。
(6个答案)
5年前关闭。
^上面根本没有答案...存在问题,无法为导航 Controller 中的特定(并非全部) View Controller 禁用自动旋转。类似的问题并不针对特定 View Controller 禁用自动旋转的能力,而是针对导航 Controller 内部所有 View Controller 禁用自动旋转的能力。我的导航 Controller 包含一些我想要自动旋转的VC和其他我不想自动旋转的VC。没有现有的问题可以令人满意地回答。
最佳答案
我制作了一个有关如何执行此操作的示例项目:GitHub repo。
虽然@Sidetalker的答案是正确的,但我认为它缺乏解释。
基本上,您为UINavigationController
创建一个自定义类,并将其分配给Storyboard中的UINavigationController
。在自定义UINavigationController
类中,对override
函数进行shouldAutorotate
,并检查topViewController
是否为要禁用自动旋转的类的ViewController
( Storyboard 中UIViewController
的类)。
在自定义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) {
// If true return false to disable it
return false
}
}
// Else normal rotation enabled
return true
}
09-09 17:10