首页 > 解决方案 > UITabbarController 隐藏标签栏破坏了安全区域布局

问题描述

我在解决自动布局问题时遇到了令人沮丧的事情。希望对这个问题有一些新的看法会更好地找到解决方案......

我在故事板文件中有一个 UITabBarController ,在第一个视图控制器中有一个 MKMapView 和一个按钮: 这就是视图最初在纵向模式下的外观,因为它应该。

该按钮被限制在 View Controller 的视图安全区域的底部。MKMapView 受限于其父视图。到目前为止,这工作正常。

当我旋转手机时,问题就来了。在UITabBarController 的viewWillTransitionToSize:withTransitionCoordinator:方法中,我调用[self.tabBar setHidden:(size.height < kMinViewSize)]是为了在视图高度太小时时隐藏标签栏。

隐藏标签栏后,这是我得到的: 标签栏被隐藏,但地图视图和按钮都没有移动来填补空白

然后当我再次旋转回纵向模式时,标签栏会按原样取消隐藏,但布局再次被搞砸了: 标签栏未隐藏,现在它覆盖了地图视图和按钮

最后,如果我选择另一个选项卡,然后返回到地图选项卡,按钮将移回正确的位置。

我错过了一些明显的东西吗?在此先感谢您的帮助!

标签: iosautolayoutuitabbarcontrollersafearealayoutguide

解决方案


好吧,我想通了,这不是很明显。该self.tabBar setHidden:调用包含在 的动画块中[coordinator animateAlongsideTransition:]。我把动画块拿出来,一切都很好。

谢谢你,安德烈斯洛塔的评论——这至少帮助我意识到代码中有问题,如果不是在故事板中的话。


推荐阅读