swift 如何以编程方式添加带乘数的约束中心

l7wslrjt  于 2023-05-16  发布在  Swift
关注(0)|答案(2)|浏览(100)

我确实在故事板中使用了带中心约束的乘数,现在我想以编程方式做同样的事情,但不知道如何去做。
不,this thread没有帮助,因为接受的答案是一个解决方案,如果超级视图大小稍后发生更改,则不会自动调整大小。
情节提要中心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)

这可能吗?

  • 是的:怎么做?
  • 否:你有没有解释为什么它不可能通过编程实现?这是不是一种结合糖隐藏着更复杂的东西?我迷路了。

是的,当使用故事板设置这个约束时,它就像预期的那样工作

x4shl7ld

x4shl7ld1#

因此,可能是我错用了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)

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

omqzjyyz

omqzjyyz2#

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

相关问题