ios - 隐藏标签栏时不会更新安全区域插图

标签 ios objective-c applet tabbar safearealayoutguide

我正在使用基于标签栏的应用程序,并且在详细信息屏幕上隐藏了标签栏。问题是当标签栏隐藏时,它仍然会占据标签栏和 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/

相关文章:

ios - 如何向我的导航栏添加渐变配色方案?

ios - BLE iOS9 的 Swift 后台模式

ios - 释放前需要removeObserver,但是ARC禁止覆盖dealloc

objective-c - 是否有资源解释如何将照片导出到网站,例如将 iPhoto 导出到 Facebook?

java - 通过网络加载的小程序和通过文件系统加载的小程序有什么区别?

ios - swift 3 : unrecognized selector sent to instance for gesture recognizer

ios - 当混合中有换行符时,UITextView firstRectForRange 不工作

iphone - 如何以编程方式清除 iPhone 上的浏览​​器缓存?

包中带有 init() 的 Java 小程序?

java - 使用 appletviewer 签名的 jar 抛出权限异常