iOS快速异常行为标签栏

时间:2018-10-25 18:51:33

标签: ios swift uitabbarcontroller

我的应用仅处于纵向模式,但是一些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上不加(分辨率较小)出现,上一页返回了在纵向模式下,但选项卡栏有故障。

picture

有人有想法吗?我不知道这是怎么回事。

1 个答案:

答案 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中,则会遇到相同的错误