【发布时间】:2015-03-12 19:47:10
【问题描述】:
我想不通。有人能告诉我为什么以及如何启用“使用标准值”吗?
【问题讨论】:
标签: ios storyboard nslayoutconstraint
我想不通。有人能告诉我为什么以及如何启用“使用标准值”吗?
【问题讨论】:
标签: ios storyboard nslayoutconstraint
标准值是“推荐的视图间距”[1]。相对于边距或安全区域的约束已包含此建议间距。这可能是您看到“使用标准值”选项被禁用的原因。
要启用“使用标准值”选项,请将约束更改为不再与边距或安全区域相关。您可能还需要取消选中“尊重语言方向”。如果该选项仍然显示为灰色,请尝试打开和关闭“相对于边距”选项——它有时会在 Interface Builder 中卡住。
[1]https://help.apple.com/xcode/mac/8.0/#/deve7dfb37c9
我遇到的一些进一步的观察/背景似乎与理解问题有关:
在安全区域布局指南之前,我们有前导/尾随边距和顶部/底部布局指南:
- 我知道将视图固定到前导边距和尾随边距无法访问“使用标准值”,因为这些边距已经从边缘提供了标准值。
- 另一方面,顶部和底部布局指南仅指示顶部和底部边缘延伸到的位置,不包括导航栏和状态栏等。与前导边距和尾随边距不同,默认情况下它们不提供与这些条的标准距离等,因此固定到顶部和底部布局指南的约束确实可以访问“使用标准值”。
现在不推荐使用顶部和底部布局指南,取而代之的是安全区域布局指南,它执行类似的功能,指示不会被 UIKit 组件(例如标签栏、导航栏等)覆盖的区域。至少在 iOS 中(tvOS 似乎是另一回事)安全区域似乎并不表示边缘 + 标准距离(正如前导和尾随边距所做的那样)。但是约束也无权访问“使用标准值”。 (见下面变灰) 这意味着如果我们使用安全区域布局指南将视图限制在边缘,我们将无法再访问标准距离。
这是疏忽还是我遗漏了什么?
它看起来也非常有问题,例如:
- 错误 #1 - 如果将情节提要迁移到安全区域布局约束,顶部和底部约束似乎确实选择了“使用标准值”(尽管“标准值”似乎为 0)。但是,如果您更改为另一个值,则无法返回“使用标准值”。都很奇怪!
- 错误 #2 - 如果您有一个很好的老式前导或尾随约束固定到设置为“相对于边距”的根视图,并且您切换到“安全区域”,则“相对于边距” " 选项当然会消失,但您不能“使用标准值”。但是 - 如果您在切换到“安全区域”之前关闭“相对于边距”,则“使用标准值”可用于安全区域布局边距。我什至遇到过需要打开“相对于边距”然后再次关闭才能“使用标准值”的情况。也就是说,这个“标准值”似乎是 0,所以即使它被选中也似乎不起作用。[2]
【讨论】:
这是因为你的第一个项目是相对于边距设置的
【讨论】: