iOS – 通过Swift更改约束的乘数

如何通过使用Swift来改变约束的乘数。

someConstraint.multiplier = 0.6 // error: 'multiplier' is get-only property 

我想知道如何更改代码中的乘数(Swift)。

由于multiplier是一个只读属性,你不能改变它,你需要用它的修改克隆replace约束。

你可以写一个扩展名来完成它,比如:

 extension NSLayoutConstraint { func constraintWithMultiplier(_ multiplier: CGFloat) -> NSLayoutConstraint { return NSLayoutConstraint.constraintWithItem(self.firstItem, attribute: self.firstAttribute, relatedBy: self.relation, toItem: self.secondItem, attribute: self.secondAttribute, multiplier: multiplier, constant: self.constant) } } 

Swift 3.0+版本:

 extension NSLayoutConstraint { func constraintWithMultiplier(_ multiplier: CGFloat) -> NSLayoutConstraint { return NSLayoutConstraint(item: self.firstItem, attribute: self.firstAttribute, relatedBy: self.relation, toItem: self.secondItem, attribute: self.secondAttribute, multiplier: multiplier, constant: self.constant) } } 

用法:

 var newConstraint = self.constraintToChange.constraintWithMultiplier(0.75) self.view!.removeConstraint(self.constraintToChange) self.view!.addConstraint(self.constraintToChange = newConstraint) self.view!.layoutIfNeeded()