【问题标题】:Safe Area increase itself after hide tab bar, but dont decrease if i show tab bar again隐藏标签栏后安全区域会自行增加,但如果我再次显示标签栏,安全区域不会减少
【发布时间】:2018-08-16 01:35:20
【问题描述】:

我在标签栏控制器中有一个视图控制器,对底部安全区域有约束,但其中一个我必须隐藏标签栏我使用这个 self.tabBarController?.tabBar.isHidden = true 这增加了安全区域

但如果我需要移动到另一个我会显示返回标签栏 self.tabBarController?.tabBar.isHidden = false 但是安全区域不会自行减少,使得视图内容在标签栏后面

为了清楚起见,我将红色视图固定在底部安全区域,接下来我去查看和隐藏标签栏

这是当它回到这个视图并再次显示标签栏时,标签栏下方的安全区域增加了,这就是为什么红色方块在下方更多

【问题讨论】:

  • 你在使用 safeAreaInsets 吗?这些只是插入值,最好使用safeAreaLayoutGuide。使用锚
  • 如果您想在将另一个视图控制器推送到导航控制器时隐藏标签栏(例如显示特定项目的详细信息),您可以在推送 VC 之前设置 nextVC.hidesBottomBarWhenPushed = true 并且作业将在不破坏安全区域配置的情况下自动完成。

标签: swift safearealayoutguide


【解决方案1】:

这似乎是 iOS 中的一个错误。隐藏/显示后,SafeArea 不会更改以考虑 tabBar。

您可以通过将视图锚定到超级视图并手动调整 tabBar 来解决此问题。例如,如果你想将 tableView 锚定到 tabBar,它看起来像这样

    if let tabBar = tabBarController?.tabBar {
        tabBar.isHidden = true
        tableViewBottomConstraint.constant = tabBar.frame.height
    }

【讨论】:

  • 此解决方案可能无法在 iPhone X 上完美运行。
猜你喜欢
  • 2020-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多