我有一个带有 4 个选项卡的 TabBarController。
其中一个选项卡有一个 UIView,其中有多个标签和按钮。
这个 UIView 本身有一个约束“Top”到 Top Layout Guide Bottom 设置为 88。
这是到导航栏的距离。
我有一个情况,我需要在运行时删除一些其他选项卡,我在 TabBarController viewDidLoad 上使用:
tabBarViewControllers?.removeAtIndex(index)
我遇到的问题是,如果我删除任何其他选项卡,一旦我尝试与选项卡屏幕交互,上述约束就会“丢失”。
知道什么可能会“打破”/改变约束吗?没有错误消息,并且查看 X、Y 坐标,看起来好像约束已调整到选项卡顶部,就好像没有导航栏一样(尽管它在屏幕上清晰可见)。
更新: 在仔细检查了启动带有所有选项卡且没有某些选项卡的 TabBarController 时的 X、Y 坐标后,100% 清楚的是,当删除选项卡时,我“丢失”了状态栏的高度和高度导致 View 的 Y 坐标为 80 而不是 152(= 80 + 44(导航栏)+ 22(状态栏)+ 6(在其他地方设置的填充))。
虽然理论上我可以将偏移量硬编码为 152,但我更愿意理解为什么 我是否失去了导航栏和状态栏的“高度”...
最佳答案
发现类似问题here 。虽然它没有解决我的问题(我没有使用scrollView),但它让我再次思考如何设置约束。
为了解决我的问题,我将主视图的垂直距离设置为与导航栏相反(我在 Storyboard中使用了固定菜单并为其设置了垂直约束)。
关于xcode - 从选项卡 Controller 中删除选项卡时出现自动布局问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38165825/