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。没有现有的问题可以令人满意地回答。

最佳答案

我制作了一个有关如何执行此操作的示例项目: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