【发布时间】:2020-03-04 12:44:46
【问题描述】:
我的 VC 以 stackView 开头,并附有 Align Bottom to Safe Area。
我有tabBar,但一开始是隐藏的tabBar.isHidden = true。
稍后当tabBar出现时,它会隐藏stackView
所以我需要在tabBar.isHidden = false 之后刷新约束的函数
当我使用tabBar.isHidden = false 启动应用程序时,stackView 会正确显示。
尝试了每个功能,例如:stackView.needsUpdateConstraints() , updateConstraints() , setNeedsUpdateConstraints(),但没有成功。
现在我正在以编程方式更改底部,但是当我切换 tabBarIndex 并返回到具有更改底部约束的那个时,它会检测到 tabBar 并将 stackView 提升到另一个视图(未附加约束)下。就像是再次刷新了约束。我正在隐藏并显示这个带有开/关屏幕约束的 stackView。
tabBar.isHidden = false后需要刷新约束,但是约束没有检测到tabBar的出现。
正如我提到的在 tabBars 之间切换解决了这个问题,所以在切换后执行一些代码来检测 tabBar。有人知道这个代码吗?我尝试调用方法 viewDidLayoutSubviews 和 viewWillLayoutSubviews 没有成功...有什么建议吗?
【问题讨论】:
-
你必须创建一个底部对齐的出口并在显示标签栏时更改其常量值。
-
不要这个方法。我想刷新约束。
-
您的
tabBar是否已添加到您的视图中?或者,您的 VC 是隐藏标签栏的UITabBarController的标签之一吗?或者,您的 VC 是否嵌入在导航控制器中,并且您将底部栏称为tabBar? -
UITabBarController 是 MAIN Controller,tabBar 的索引 0 上是 stackView
标签: swift nslayoutconstraint tabbar