当 UITabbar 隐藏时,SafeArea 插图不会更新

Rag*_*hav 9 applet objective-c tabbar ios safearealayoutguide

我正在使用基于选项卡栏的应用程序,并且在详细信息屏幕上选项卡栏被隐藏。问题是当选项卡栏隐藏时,它仍然会占据选项卡栏的空白区域并且safeAreaLayoutInsets不会更新。当方向改变或从背景移动到前景时,它会起作用。

self.tabBarController.tabBar.hidden = YES;
Run Code Online (Sandbox Code Playgroud)

查看层次结构

UITabbarController
  |--UISplitViewController
     |--UIViewController (first VC)
        |--UINavigationController
           |--UIViewController (second VC)
Run Code Online (Sandbox Code Playgroud)

该问题与Apple 论坛中报告的问题类似

Rag*_*ari 19

如果您需要切换可见视图的选项卡栏可见性,此解决方法可以修复布局:

let currentFrame = tabBarController.view.frame
tabBarController.view.frame = currentFrame.insetBy(dx: 0, dy: 1)
tabBarController.view.frame = currentFrame
Run Code Online (Sandbox Code Playgroud)

此代码应在选项卡栏可见性更改后立即执行。它会触发安全区域的更新和视图的单个布局传递。frame用户看不到大小的调整。

这是一种解决方法,当然不是很好,但它对我们有用,而且似乎没有负面影响。此外,我预计将来 iOS 自行更新布局时不会产生负面影响。