【问题标题】:The SafeArea insets are not updated when UITabbar is hidden隐藏标签栏时不更新安全区域插图
【发布时间】:2020-06-12 05:11:42
【问题描述】:

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

self.tabBarController.tabBar.hidden = YES;

查看层次结构

UITabbarController
  |--UISplitViewController
     |--UIViewController (first VC)
        |--UINavigationController
           |--UIViewController (second VC)

该问题与Apple Forum 中报告的问题类似

【问题讨论】:

  • 从第一个视图移动时尝试使用hidebottombarwhenpushed隐藏推送
  • @Vinodh 是正确的 hidebottombarwhenpushed 将解决问题,还要检查您的约束并确保底部有安全区域插入。
  • 我尝试使用hidebottombarwhenpushed,但它不适用于 UISplitViewController

标签: ios objective-c applet tabbar safearealayoutguide


【解决方案1】:

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

let currentFrame = tabBarController.view.frame
tabBarController.view.frame = currentFrame.insetBy(dx: 0, dy: 1)
tabBarController.view.frame = currentFrame

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

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

【讨论】:

  • 你是我的救星。非常感谢!
  • 这在 iOS 14.5 上对我有用
猜你喜欢
  • 1970-01-01
  • 2018-04-03
  • 2018-08-16
  • 2011-11-07
  • 2010-11-09
  • 2016-06-29
  • 2018-05-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多