隐藏UITabBar后重新应用约束

时间:2019-02-04 23:50:55

标签: swift autolayout constraints

我有一个约束在视图的UIButton底部锚点的safeAreaLayoutGuide和该UITabBar中的UIView。那里一切都很好。但是,当我全屏显示图像时,我会隐藏UITabBar。关闭全屏显示后,我再次显示UITabBar。但是,UIButton向下移动并没有像UITabBar隐藏之前那样约束到UITabBarUIButton部分覆盖了UITabBar。有什么办法吗?

这是关闭的全屏代码。

@objc func dismissFullscreenImage(_ sender: UITapGestureRecognizer) {
    sender.view?.removeFromSuperview()
    self.navigationController?.isNavigationBarHidden = false
    self.tabBarController?.tabBar.isHidden = false
}

1 个答案:

答案 0 :(得分:2)

您可以尝试以下两种操作:

解决方案1:

将此行添加到dismissFullscreenImage():

self.view.setNeedsLayout()

这会使self.view的布局无效,并使其重新布局。


解决方案2:

通过使navigationBartabBar不可见,可以避免重播视图。

与其通过更改其navigationBar属性来隐藏/显示tabBarisHidden,而是尝试设置其alpha的值:

// hide
self.navigationController?.navigationBar.alpha = 0
self.tabBarController?.tabBar.alpha = 0

// show
self.navigationController?.navigationBar.alpha = 1
self.tabBarController?.tabBar.alpha = 1