【问题标题】:Undeleteable constraints added by InterfaceBuilderInterface Builder 添加的不可删除约束
【发布时间】:2017-02-24 05:54:04
【问题描述】:

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

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

所以在我看来,Interface Builder 添加了无法删除的约束。我的问题是这些不可删除的约束没有帮助。例如,我在堆栈视图内的视图中添加了一个 width >= 50 约束,发现它与系统添加的无法删除的 width = 0 约束冲突。

有谁知道为什么会发生这种情况或我该如何解决?谢谢。

【问题讨论】:

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


    【解决方案1】:

    检查是否在任何其他尺寸类中添加了冲突约束。约束可能仅在该尺寸类中启用,而对您当前正在处理的尺寸类禁用。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

        例子:

        stackView.spacing = 6.0
        

        【讨论】:

          猜你喜欢
          • 2014-11-14
          • 2012-03-22
          • 1970-01-01
          • 2015-12-17
          • 1970-01-01
          • 1970-01-01
          • 2013-09-28
          • 2014-08-12
          • 1970-01-01
          相关资源
          最近更新 更多