我下载了新的Xcode,在Interface Builder中,我遇到了很多问题,例如:
固定宽度约束可能导致剪辑
它看起来像这样:
我确实有几种语言的本地化,我理解警告,在另一种语言中标签的大小可能会改变,但我的应用程序没有这个问题。我昨天在Xcode 8中运行并测试了它,很好。我不想花费数小时的时间来添加无意义的新约束。
有建议的解决方案
即使我的应用程序中没有多种语言,我也会收到相同的警告,这让我发现了真正发生的事情。 。 。
这里有几件不同的事情。通过将对象间距的宽度从固定宽度更改为大于或等于或小于或等于,我能够在我自己的应用程序中静音固定宽度警告。
这可以通过在界面构建器中选择对象,转到尺寸检查器并在那里更改它来完成:
或者,从文档大纲中选择约束,转到大小检查器,然后在其中进行更改:
至于屏幕截图顶部的警告:
修复了具有中心约束的前导约束和尾随约束可能导致剪切
这是我自己的应用程序的屏幕截图,其中我得到完全相同的警告:
我有一个标签,@符号设置为前导和尾随按钮,但也将中心与评级标签对齐。一旦我删除了中心对齐约束,警告消失了,但我留下了一组布局不正确的对象。
然后,我辞职了,接受了Stack View。尽管使用起来很烦人,当你正确地获得所有约束和设置时,它会精美地展示并且没有任何警告。
编辑
正如Repose在评论中所写的那样,有时只需添加> = 0将是您所需要的,因为您确保两个元素不重叠。
我在迁移到Xcode 9时遇到了同样的问题,并发现了一种对某些布局有用的方法。在我的例子中,我想要一个表头,其中两列(UILabels)具有固定宽度,另一列具有可变宽度。无论我如何指定列宽(包括使用大于或等于而不是相等的约束等),我都会收到关于可能的剪切的警告。就我而言,我希望可变宽度列(UILabel)在必要时进行剪辑。我本可以忽略警告,但不喜欢这样做。
这里使用的方法是创建一个具有适当大小约束的UIView,并将UILabel作为子视图嵌入到UIView中。然后在必要时发生截断,我没有得到警告。这适用于UIView /嵌入式UILabel是否在StackView中。
这基本上与Haroldo Gondim的方法相同,但在这里你可以看到它也可以使用或不使用StackView。
下图显示了使用和不使用StackView的方法。 “SpacerName”是包含标签的可变宽度UIView,“SpacerPD”是固定宽度为80的宽度。[颜色不重要;只是在那里显示观点的位置。]
我知道这个问题已经得到了解答,但我在我的案例中修复此错误的方法是添加“宽高比”属性,然后消除宽度或高度约束,这非常有效,而且工作量更少,我设法保持相同的输出并适应我对不同设备的看法。
如果您需要固定宽度约束按钮,只需将宽度约束优先级设置为700
。