从tabbarcontroller中删除选项卡时出现自动布局问题

时间:2016-07-03 01:02:51

标签: xcode swift autolayout nslayoutconstraint

我有一个带有4个标签的TabBarController。

其中一个标签有一个UIView,它有几个标签&纽扣。

此UIView本身有一个约束“顶部”到顶部布局指南底部设置为88。

这是到导航栏的距离。

我有一个案例,我需要在运行时删除一些其他选项卡,我在TabBarController viewDidLoad上使用:

tabBarViewControllers?.removeAtIndex(index)

我遇到的问题是,如果我删除任何其他标签,一旦我尝试与标签屏幕进行交互,上述约束就会“丢失”。

知道什么可能“破坏”/改变约束?没有错误消息,看着X,Y坐标,看起来好像约束被调整到选项卡的顶部,就像没有导航栏一样(虽然它在屏幕上清晰可见)。

更新: 仔细检查X,Y坐标,当启动TabBarController与所有选项卡和没有一些选项卡时,100%清楚,当删除选项卡时,我'丢失'状态栏的高度和高度导航栏导致视图的Y坐标为80而不是152(= 80 + 44(导航栏)+ 22(状态栏)+ 6(填充设置在其他地方))。

虽然理论上我可以将偏移硬编码为152,但我更理解为什么 我失去了导航栏和状态栏的“高度”......

1 个答案:

答案 0 :(得分:0)

发现类似的问题here。虽然它没有解决我的问题(我没有使用scrollView),但它让我再次思考如何设置约束。

为了解决我的问题,我将主视图的垂直距离设置为与导航栏相对(我在故事板中使用了pin菜单并为其设置了垂直约束)。