在iPhone X上进行模态演示后,在没有选项卡的情况下选择到控制器时,UITabbar会跳转

时间:2018-07-21 17:45:48

标签: swift uitabbar

我有一个Master-Detail应用程序,该应用程序在Master Controller屏幕上有一个选项卡栏,我遇到了iPhone X的问题。当我从Master切换到Detail时,一切正常。如果我先显示来自母版的模态窗口,然后转到“详细信息”,则选项卡栏会冻结一段时间,并显示错误的尺寸。如果我固定了标签栏的大小,那么所有动画效果都很好。例如:

class MyTabBar: UITabBar {
    var tabBarHeight: CGFloat = 83

    override func sizeThatFits(_ size: CGSize) -> CGSize {
        let superSize = super.sizeThatFits(size)
        return CGSize(width: superSize.width, height: self.tabBarHeight)
    }
}

但是,我不想固定大小,因为管理所有可能的大小和方向太复杂了。

1 个答案:

答案 0 :(得分:0)

我找到了解决方法:

class MyTabBarController: UITabBarController {

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        self.view.setNeedsLayout()
    }

    override func viewWillDisappear(_ animated: Bool) {
        super.viewWillDisappear(animated)
        UIView.animate(withDuration: 0.4) { [weak self] in
            self?.view.layoutIfNeeded()
        }
    }
}