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

时间:2015-03-12 19:47:11

标签: ios storyboard nslayoutconstraint

我无法解决这个问题。有人可以告诉我为什么以及如何启用"使用标准值"?

standard-value-disabled

2 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:3)

标准值是“视图之间的建议间距” [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