UITabbarController 隐藏标签栏破坏安全区域布局
UITabbarController hide tab bar breaks safe area layout
让自动布局问题起作用让我很沮丧。希望对这个问题有一些新的看法会更好地找到解决方案...
我在故事板文件中有一个 UITabBarController,在第一个视图控制器中有一个 MKMapView 和一个按钮:
按钮被限制在视图控制器视图安全区域的底部。 MKMapView 被限制在它的超级视图中。到目前为止效果很好。
旋转 phone 时出现问题。在 UITabBarController 的 viewWillTransitionToSize:withTransitionCoordinator:
方法中,我调用 [self.tabBar setHidden:(size.height < kMinViewSize)]
以便在视图高度太小时隐藏标签栏。
隐藏标签栏后,我得到的是:
然后当我再次旋转回纵向模式时,标签栏会按原样取消隐藏,但布局又一次搞砸了:
最后,如果我 select 另一个选项卡,然后返回到地图选项卡,按钮将移回正确的位置。
我是不是遗漏了什么明显的东西?预先感谢您的帮助!
好吧,我想通了,而且不是很明显。 self.tabBar setHidden:
调用包含在 [coordinator animateAlongsideTransition:]
的动画块中。我把动画块拿出来了,一切正常
谢谢安德烈·斯洛塔 (Andre Slotta) 的评论——这至少帮助我意识到代码中有问题,即使情节提要中没有。
您可以通过重新排列约束以及设备旋转来做到这一点
override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
coordinator.animate(alongsideTransition: { (_) in
//code
}) { (_) in
}
}
让自动布局问题起作用让我很沮丧。希望对这个问题有一些新的看法会更好地找到解决方案...
我在故事板文件中有一个 UITabBarController,在第一个视图控制器中有一个 MKMapView 和一个按钮:
按钮被限制在视图控制器视图安全区域的底部。 MKMapView 被限制在它的超级视图中。到目前为止效果很好。
旋转 phone 时出现问题。在 UITabBarController 的 viewWillTransitionToSize:withTransitionCoordinator:
方法中,我调用 [self.tabBar setHidden:(size.height < kMinViewSize)]
以便在视图高度太小时隐藏标签栏。
隐藏标签栏后,我得到的是:
然后当我再次旋转回纵向模式时,标签栏会按原样取消隐藏,但布局又一次搞砸了:
最后,如果我 select 另一个选项卡,然后返回到地图选项卡,按钮将移回正确的位置。
我是不是遗漏了什么明显的东西?预先感谢您的帮助!
好吧,我想通了,而且不是很明显。 self.tabBar setHidden:
调用包含在 [coordinator animateAlongsideTransition:]
的动画块中。我把动画块拿出来了,一切正常
谢谢安德烈·斯洛塔 (Andre Slotta) 的评论——这至少帮助我意识到代码中有问题,即使情节提要中没有。
您可以通过重新排列约束以及设备旋转来做到这一点
override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
coordinator.animate(alongsideTransition: { (_) in
//code
}) { (_) in
}
}