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