如何禁用导航控制器(Swift)中特定视图控制器的自动旋转?

IvO*_*vOS 5 xcode uiviewcontroller uinavigationcontroller swift

^上面根本没有答案...存在问题,无法为导航控制器内部的特定(并非全部)视图控制器禁用自动旋转。类似的问题并不针对特定视图控制器禁用自动旋转的能力,而是针对导航控制器内部所有视图控制器禁用自动旋转的能力。我的导航控制器包含一些我想自动旋转的VC和其他我不想自动旋转的VC。没有现有的问题可以令人满意地回答。

zzz*_*zel 4

我制作了一个关于如何执行此操作的示例项目:GitHub repo

虽然@Sidetalker 的答案是正确的,但我认为它缺乏一些解释。

基本上,您为您创建一个自定义类UINavigationController并将其分配给UINavigationController故事板。在自定义UINavigationController类中,您可以执行overrideshouldAutorotate函数并检查您想要禁用自动旋转的类(您在情节提要中的类)是否topViewController为该类。ViewControllerUIViewController

在定制中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
}
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

2794 次

最近记录:

9 年,11 月 前