InterfaceBuilder

时间:2016-10-14 17:53:12

标签: ios interface-builder xcode8 ios-autolayout uistackview

我正在使用适用于iOS 9的Xcode 8构建并使用自动布局。

有时,当我在Interface Builder中安装约束时,会立即发生冲突。当我点击红色披露并查看冲突的约束时,我会看到我刚刚安装的那个和另一个冲突的约束。当我点击我安装的约束时,它突出显示。当我点击冲突的约束时,它不会突出显示。当我单击红点以删除约束时,冲突约束旁边的复选框将显示为灰色且无法选中。当我返回文档检查器或大小检查器时,我没有看到它所适用的对象列出的冲突约束。

因此,我认为Interface Builder添加了无法删除的约束。我的问题是这些不可修复的约束无济于事。例如,我向堆栈视图内部的视图添加宽度> = 50约束,并发现它与系统添加的width = 0约束无法删除。

有谁知道为什么会这样或者我如何解决这个问题?感谢。

3 个答案:

答案 0 :(得分:2)

为避免冲突,请将宽度约束的优先级降低到250. UIStackView的系统添加约束优先级为1000.如果在堆栈视图中隐藏视图,则会设置宽度(或高度)约束常数为零。

答案 1 :(得分:0)

检查是否在任何其他大小类中添加了冲突约束。可能会发生约束仅在该大小类中启用,并且对于您当前正在处理的大小类禁用。

答案 2 :(得分:0)

检查是否正在使用UIStackView。它们会添加生成的约束,您可以通过在IB或代码中调整其间距来更改其中一些约束。

示例:

stackView.spacing = 6.0

enter image description here