iPhone在从横屏切换到竖屏或从竖屏切换到横屏时,UITabbar的高度和显示没有动态变化,iOS11也是如此。

7
我添加了UITabBar但没有使用AutoLayout,之前一直能够正常工作,但在iOS 10.3.1之后出现问题。似乎iOS 11中有一个新功能,即UITabBar的高度为纵向模式下的49,横向模式下的32(Photo App是一个很好的例子)。现在,当我在iOS11上运行我的应用程序时,如果我在横向模式下启动应用程序,则UITabBar的高度从32开始,但当它旋转到纵向模式时,它仍保持在32,并且图标变大并超出TabBar框架。当我在纵向模式下启动应用程序时,TabBar的高度从49开始,并在旋转到纵向模式时保持不变(这是可以接受的)。
我尝试使用AutoLayout和约束来解决此问题,但无法解决。如果有人遇到此问题,将是一个很好的帮助。
这个问题似乎只发生在iPhone非plus设备上。
更新:使用下面的答案可以固定高度,但在横向模式下,UITabBarItem的文本和图标不是水平对齐,而是垂直对齐,特别是在iPhone X上。
我遇到的问题类似于这里的问题。
3个回答

6

我遇到了这个问题,通过在选项卡栏上调用invalidateIntrinsicContentSize(),然后在它的父视图上调用updateConstraintsIfNeeded()来解决了它。在我的情况下,我都是在一个动画块内调用的,但也可能有可能将它们中的一个或两个移出该块。


1
{btsdaf} - Rizwan Sattar
高度是通过使用上面的答案固定的,但在横向模式下,UITabBar项目的文本和图标在iPhone X上不是水平对齐,而是垂直对齐。 - eracube

2

这对我来说在 iOS 11.3.1 上有效。

override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()
    tabBar.invalidateIntrinsicContentSize()
}

高度是通过使用下面的答案固定的,但在横向模式下,UITabBar项目的文本和图标在iPhone X上不是水平对齐,而是垂直对齐。 - eracube
@ErAcube,你找到解决这个问题(不显示紧凑设计)的方法了吗? - Nathan Barreto
@NathanBarreto 我还没有。 - eracube

0
在我的情况下,解决方案是将导航控制器添加为故事板入口点,然后将选项卡栏控制器作为导航控制器的根视图控制器。不知何故,问题是因为选项卡栏控制器是故事板入口点。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接