“修正了前导和尾随约束可能导致剪辑”错误?

时间:2017-09-14 19:19:45

标签: ios xcode storyboard constraints xcode9

这里有this other question解决类似问题,但在这种情况下Xcode的行为是正确的,只是烦人。

但就我而言,我认为这实际上是一个错误:

example

该标签可以有无限数量的行,因此它永远不会被剪裁,文本只会破坏。

每次本地化都可以正常使用:

example2

我希望标签居中,我希望文本距离边距至少20像素,因此我为前导和尾随设置了固定约束。 Xcode希望我将其中一个更改为“大于或等于”约束,但在这种情况下,文本将不会完全居中(我尝试过)。

我想要的只是中心文本,它不会太靠近边距,但现在我无法在不触发警告的情况下实现这一目标。

有关如何解决此问题的任何想法?它真的是一个错误,还是我做错了什么?

编辑:这是显示错误的屏幕截图。约束不是直接在视图控制器中,而是在我用作表视图的背景的子视图中。如果我删除这些限制,警告就会消失;如果我把它们添加回去,它会再次出现。我在一个新项目中试过这个并且无法重现它,我不知道它为什么会在这里发生。

example3

修改

这是另一个例子。当右边约束设置为“大于或等于”时,所有的好:

example4

一旦我将其设置为“相等”,繁荣:

example5

3 个答案:

答案 0 :(得分:4)

如果您仍在寻找答案,请在特定情况下尝试在标签上设置比例宽度,并在视图控制器的视图中水平居中。

清除标签上的所有约束,右键单击从标签拖动到Background View,然后从弹出菜单中选择Equal WidthsCenter Horizontally in ContainerCenter Vertically in Container

现在,既然您说要在标签的左侧和右侧都需要20px的边距,请在等宽度约束上编辑Multiplier并将其设置为widthOfBackgroundView - 40)/widthOfBackgroundView

因此,假设背景视图的宽度为414,乘数应为374/414

width minus 40乘数的原因是它在标签的两边都覆盖了20px。这应该会使您的警告消失,并按照您期望的方式布置标签。

我遇到了同样的问题,并且能够以这种方式修复警告。希望这有帮助!

答案 1 :(得分:3)

这里有一些问题,在Xcode9的最终版本中引入。似乎该错误与语言方向有关:由于某种原因,Interface Builder不能很好地理解默认语言方向条件的自动布局。

正如Reposethread所建议的那样,你应该尝试使语言方向的使用无效至少一个失败的约束(即尾随)。这种方法解决了我的警告。

答案 2 :(得分:2)

在XCode 9GM(版本9.0(9A235))中检查,它可以正常工作

enter image description here

删除约束并手动添加它们。