隐藏 UITabBar 后重新应用约束
Reapply constraints after hiding UITabBar
我有一个 UIButton
被限制在视图的 safeAreaLayoutGuide
底部锚点和 UITabBar
中 UIView
。那里一切都好。但是,当我全屏显示图像时,我隐藏了 UITabBar
。当我关闭全屏时,我再次显示 UITabBar
。但是,UIButton
向下移动并且不会像隐藏 UITabBar
之前那样限制到 UITabBar
。 UIButton
被 UITabBar
部分覆盖。任何解决方案?
这是关闭全屏的代码。
@objc func dismissFullscreenImage(_ sender: UITapGestureRecognizer) {
sender.view?.removeFromSuperview()
self.navigationController?.isNavigationBarHidden = false
self.tabBarController?.tabBar.isHidden = false
}
您可以尝试以下两种方法:
解决方案一:
将此行添加到 dismissFullscreenImage():
self.view.setNeedsLayout()
这会使 self.view
的布局无效并导致重新布局。
方案二:
您可以通过使 navigationBar
和 tabBar
不可见来避免重新布局视图。
而不是 hiding/showing navigationBar
和 tabBar
通过更改它们的 isHidden
属性,尝试设置它们的 alpha
值:
// hide
self.navigationController?.navigationBar.alpha = 0
self.tabBarController?.tabBar.alpha = 0
// show
self.navigationController?.navigationBar.alpha = 1
self.tabBarController?.tabBar.alpha = 1
我有一个 UIButton
被限制在视图的 safeAreaLayoutGuide
底部锚点和 UITabBar
中 UIView
。那里一切都好。但是,当我全屏显示图像时,我隐藏了 UITabBar
。当我关闭全屏时,我再次显示 UITabBar
。但是,UIButton
向下移动并且不会像隐藏 UITabBar
之前那样限制到 UITabBar
。 UIButton
被 UITabBar
部分覆盖。任何解决方案?
这是关闭全屏的代码。
@objc func dismissFullscreenImage(_ sender: UITapGestureRecognizer) {
sender.view?.removeFromSuperview()
self.navigationController?.isNavigationBarHidden = false
self.tabBarController?.tabBar.isHidden = false
}
您可以尝试以下两种方法:
解决方案一:
将此行添加到 dismissFullscreenImage():
self.view.setNeedsLayout()
这会使 self.view
的布局无效并导致重新布局。
方案二:
您可以通过使 navigationBar
和 tabBar
不可见来避免重新布局视图。
而不是 hiding/showing navigationBar
和 tabBar
通过更改它们的 isHidden
属性,尝试设置它们的 alpha
值:
// hide
self.navigationController?.navigationBar.alpha = 0
self.tabBarController?.tabBar.alpha = 0
// show
self.navigationController?.navigationBar.alpha = 1
self.tabBarController?.tabBar.alpha = 1