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()