如何以编程方式使用乘数添加约束中心
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。
我确实在情节提要中使用了带有中心约束的乘法器,现在我想以编程方式做同样的事情,但不知道该怎么做。
不,
故事板中心 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。