我正在使用基于标签栏的应用程序,并且在详细信息屏幕上隐藏了标签栏。问题是当标签栏隐藏时,它仍然会占据标签栏和 safeAreaLayoutInsets
的空白区域。没有更新。在方向更改或从背景移动到前景时,它将起作用。
self.tabBarController.tabBar.hidden = YES;
查看层次结构
UITabbarController
|--UISplitViewController
|--UIViewController (first VC)
|--UINavigationController
|--UIViewController (second VC)
该问题类似于 Apple Forum 中报告的问题。
最佳答案
如果您需要切换可见 View 的选项卡栏可见性,此解决方法可修复布局:
let currentFrame = tabBarController.view.frame
tabBarController.view.frame = currentFrame.insetBy(dx: 0, dy: 1)
tabBarController.view.frame = currentFrame
更改标签栏可见性后应立即执行此代码。它触发安全区域的更新和 View 的单个布局传递。 frame
的大小调整对用户不可见。这是一种解决方法,当然不是很好,但它对我们有用,并且似乎没有负面影响。此外,我不希望将来 iOS 自行更新布局时会产生负面影响。
关于ios - 隐藏标签栏时不会更新安全区域插图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60445940/