如何以可视格式设置自动布局默认间距度量的优先级?

ken*_*nyc 6 cocoa cocoa-touch uikit appkit autolayout

自动布局使用-符号指示约束应使用默认间距.有没有办法在不必明确设置度量值的情况下设置该间距的优先级?

例如,以下可视格式将在myView其superview 之间创建一个等于默认Cocoa/CocoaTouch值的前导约束.但是这种约束具有优先权required.

@"H:|-[myView]"

以下将创建具有较低优先级的前导约束,但必须指定显式度量值:

@"H:|-(10@750)-[myView]"

我希望能够为前导约束赋予优先级,但不是明确的度量.理由是1)我不想猜测Apple的价值是什么,以及2)如果Apple改变了这个价值,那么将来会证明这一点.

理想情况下,我喜欢以下内容:

@"H:|-(@750)-[myView]" 要么 @"H:|-(-@750)-[myView]"

但这两种语法都不被接受.是否有一个秘密格式字符串可以实现这一目标?

(我不认为iOS和MacOS之间有这样的差异,但如果有,我的目标是MacOS.)

小智 1

您无法在视觉格式约束中设置默认间距的优先级。仅当显式创建约束时才能执行此操作。

let constraint = NSLayoutConstraint(item: myView, attribute: .leadingMargin, relatedBy: .equal, toItem: superview, attribute: .leadingMargin, multiplier: 1, constant: 0)
constraint.priority = 750
Run Code Online (Sandbox Code Playgroud)

您可以通过将属性指定为leadingMargintrailingMargin来获取默认间距,而不是仅使用leadingtrailing