我有一个在 NavigationController 中嵌入了几个 VC 的应用程序。
我需要将所有 VC 锁定为纵向,并且只有一个锁定在纵向和横向。
我尝试了不同的方法,这个方法对我有用:
extension UINavigationController {
public override func supportedInterfaceOrientations() -> Int {
return visibleViewController.supportedInterfaceOrientations()
}
public override func shouldAutorotate() -> Bool {
return visibleViewController.shouldAutorotate()
}
}
然后我像这样修改每个 ViewController:
class ViewController: UIViewController {
override func supportedInterfaceOrientations() -> Int {
return Int(UIInterfaceOrientationMask.Portrait.rawValue)
}
}
当我打开应用程序并从一个 VC 转到另一个时,一切都很好。应该只有肖像的视图只有肖像。然后我打开未修改的视图并按预期更改 interfaceOrientation。
但是,假设我将最后一个未修改的视图保留在 Landscape 中,然后按 NavBar 中的后退按钮并转到上一个控制器(已修改为仅纵向)。VC 的布局显示为横向。
如果我一直按下返回按钮,所有其他 VC 的行为就像他们从未被告知只是肖像一样。
我使用了这篇文章Korey Hinton,锁屏旋转