如何以编程方式使用乘数添加约束中心

How to programmatically add constraint center with multiplier

我确实在情节提要中使用了带有中心约束的乘法器,现在我想以编程方式做同样的事情,但不知道该怎么做。

不, 没有帮助,因为已接受的答案是一种解决方法,如果稍后 superview 大小发生变化,它不会自动调整大小。

故事板中心 X 约束:

我试过没有成功的:

// Does not exist
buttonLeft.centerXAnchor.constraint(equalTo: centerXAnchor, multiplier: 0.5).isActivate = true

// error shown:
// Cannot convert value of type 'NSLayoutXAxisAnchor' to expected argument type 'NSLayoutConstraint.Attribute'
let newConstraint = NSLayoutConstraint(item: self, attribute: centerXAnchor, relatedBy: .equal, toItem: buttonLeft, attribute: centerXAnchor, multiplier: 0.5, constant: 0)

可能吗?

是的,当使用情节提要设置此约束时,它会按预期工作

所以有可能,我误用了 centerXAnchor 而不是 .centerX

另外我调用每一项的顺序不正确:

// Not Working
NSLayoutConstraint(item: self, attribute: centerXAnchor, relatedBy: .equal, toItem: buttonLeft, attribute: centerXAnchor, multiplier: 0.5, constant: 0)

// Working
NSLayoutConstraint(item: buttonLeft, attribute: .centerX, relatedBy: .equal, toItem: self, attribute: .centerX, multiplier: 0.5, constant: 0)

虽然我找不到任何方法来使用锚点方法创建约束。

在以编程方式添加约束之前尝试使用 self.view.translatesAutoresizingMaskIntoConstraints = false。