^上面根本没有答案......在导航控制器内部的特定(非全部)视图控制器上禁用自动旋转时出现问题。类似的问题没有解决为特定视图控制器禁用自动旋转的能力,而是在导航控制器内的所有视图控制器中禁用自动旋转。我的导航控制器包含一些我希望自动旋转的VC以及其他我不想自动旋转的VC。没有现成的问题可以满意地回答这个问题。
答案 0 :(得分:4)
我制作了一个关于如何执行此操作的示例项目:GitHub repo。
虽然@ Sidetalker的答案是正确的,但我认为它缺乏一点解释。
基本上,您为UINavigationController
创建自定义类,并将其分配给Storyboard中的UINavigationController
。在自定义UINavigationController
课程中,您override
shouldAutorotate
函数并检查topViewController
是否为ViewController
(故事板中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
}