隐藏 UITabBar 后重新应用约束

Reapply constraints after hiding UITabBar

我有一个 UIButton 被限制在视图的 safeAreaLayoutGuide 底部锚点和 UITabBarUIView。那里一切都好。但是,当我全屏显示图像时,我隐藏了 UITabBar。当我关闭全屏时,我再次显示 UITabBar 。但是,UIButton 向下移动并且不会像隐藏 UITabBar 之前那样限制到 UITabBarUIButtonUITabBar 部分覆盖。任何解决方案?

这是关闭全屏的代码。

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

您可以尝试以下两种方法:

解决方案一:

将此行添加到 dismissFullscreenImage():

self.view.setNeedsLayout()

这会使 self.view 的布局无效并导致重新布局。


方案二:

您可以通过使 navigationBartabBar 不可见来避免重新布局视图。

而不是 hiding/showing navigationBartabBar 通过更改它们的 isHidden 属性,尝试设置它们的 alpha 值:

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

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