为什么在Storyboard中使用标准值变灰?

Mat*_*ang 9 storyboard ios nslayoutconstraint

我无法弄清楚这一点.有人可以告诉我为什么以及如何启用"使用标准值"?

标准值禁用

小智 6

这是因为你的第一项是相对于保证金设定的

  • 什么呢?你能解释一下为什么重要吗? (4认同)

Nat*_*ker 5

的标准值是“视图之间推荐间距” [1]。相对于边距或安全区域的约束已经包含此建议的间距。这很可能就是您看到“使用标准值”选项被禁用的原因。

要启用“使用标准值”选项,请将约束更改为不再相对于边距或安全区域。您可能还需要取消选中“尊重语言方向”。如果该选项仍显示为灰色,请尝试打开和关闭“相对于边距”选项-有时它会在Interface Builder中卡住。

[1] https://help.apple.com/xcode/mac/8.0/#/deve7dfb37c9


我遇到的其他一些观察结果/背景似乎与理解该问题有关:

在《安全区域布局指南》之前,我们有前/后边距和《顶部/底部布局指南》:

  • 我知道将视图固定到前缘和后缘都无法使用“使用标准值”,因为这些边距已经从边缘提供了标准值。
  • 另一方面,顶部和底部布局参考线仅指示顶部和底部边缘延伸到的位置,不包括导航栏和状态栏等。与前后页边距不同,默认情况下,它们不提供与这些栏等的标准距离,因此固定在“顶部和底部”布局指南中的约束确实可以访问“使用标准值”。

现在不建议使用顶部和底部布局指南,而推荐使用安全区域布局指南,该功能执行类似的功能,指示UIKit组件(如选项卡栏,导航栏等)不会覆盖的区域。至少在iOS中(tvOS似乎换个说法)安全区域似乎并不表示边缘+标准距离(就像前缘和尾缘一样)。但是,约束也无法访问“使用标准值”。(下面显示为灰色)这意味着,如果我们使用“安全区域布局”参考线将视图约束到边缘,则我们将无法再使用标准距离。

这是疏忽吗,还是我错过了什么?

似乎也有很多问题,例如:

  • 错误#1-如果将情节提要迁移到“安全区域布局约束”,则顶部和底部约束似乎都选择了“使用标准值”(尽管“标准值”似乎为0)。但是,如果更改为另一个值,则无法返回到“使用标准值”。一切都很奇怪!
  • 错误#2-如果您将固定在根视图上的老式前导或尾随约束固定为“相对于保证金”,而切换到“安全区域”,则“相对于保证金”选项当然会消失,但是您不能“使用标准值”。但是-如果在切换到“安全区域”之前关闭“相对于裕度”,则“使用标准值”可用于安全区域布局裕度。我什至遇到了需要打开“相对于保证金”然后再次关闭才能使用“使用标准值”的情况。就是说,这个“标准值”似乎为0,因此即使被选中也似乎不起作用。[2]

[2] https://forums.developer.apple.com/thread/87028