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

标签 xcode swift autolayout nslayoutconstraint

我有一个带有 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/

相关文章:

ios - 切换环境 iOS

ios - Xcode Beta 6 上的 NSString 和 String

ios - 自动布局约束 : Unable to simultaneously satisfy constraints

ios - 为什么水平 ScrollView 内容之间存在间隙?

xcode - Mac 操作系统 - "Trust request error (-402,653,181)"

iphone - UITableViewCell 高亮覆盖了我的 accessoryView

swift - 创建符号断点/修复自动布局问题

swift - UITableView Cell 显示问题

ios - 从空 Swift 数组中获取对象类型

ios - UITableView cellForRowAt 与 willDisplay