我的应用仅处于纵向模式,但是一些Viewcontroller(用于读取pdf)可以选择处于横向模式。 我正在使用此功能允许横向模式
func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask {
if let rootViewController = self.topViewControllerWithRootViewController(rootViewController: window?.rootViewController) {
if (rootViewController.responds(to: Selector(("canRotate")))) {
// Unlock landscape view orientations for this view controller
return .allButUpsideDown;
}
}
// Only allow portrait (standard behaviour)
return .portrait;
}
然后在横向模式下,如果我们按下后退按钮,我将使用此功能强制以前的视图控制器返回纵向模式
override func viewWillDisappear(_ animated : Bool) {
super.viewWillDisappear(animated)
if (self.isMovingFromParentViewController) {
UIDevice.current.setValue(Int(UIInterfaceOrientation.portrait.rawValue), forKey: "orientation")
}
}
它在iPhone(加号)上运行正常,前一页返回到纵向模式,选项卡栏很好,但是有一个错误仅在iPhone上不加(分辨率较小)出现,上一页返回了在纵向模式下,但选项卡栏有故障。
有人有想法吗?我不知道这是怎么回事。
答案 0 :(得分:0)
我通过删除“解决了”问题
override func viewWillDisappear(_ animated : Bool) {
super.viewWillDisappear(animated)
if (self.isMovingFromParentViewController) {
UIDevice.current.setValue(Int(UIInterfaceOrientation.portrait.rawValue), forKey: "orientation")
}
在子视图中
并将其添加到父视图中。
override func viewDidAppear(_ animated: Bool) {
UIDevice.current.setValue(Int(UIInterfaceOrientation.portrait.rawValue), forKey: "orientation")
}
我仍然不了解该错误,但至少有一种解决方法...
请注意,如果我将此代码放入viewWillAppear中,则会遇到相同的错误