我有一个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)
}
}
但是,我不想固定大小,因为管理所有可能的大小和方向太复杂了。
答案 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()
}
}
}