iOS - 将约束乘数更改为 Swift
iOS - Change the multiplier of constraint by Swift
如何使用 Swift.
更改约束的乘数
someConstraint.multiplier = 0.6 // error: 'multiplier' is get-only property
我想知道如何在代码中更改乘数 (Swift)。
由于 multiplier
是只读的 属性 并且您无法更改它,因此您需要用修改后的克隆替换约束。
您可以使用扩展程序来执行此操作,如下所示:
Swift 4/5:
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)
}
}
用法:
let newConstraint = constraintToChange.constraintWithMultiplier(0.75)
view.removeConstraint(constraintToChange)
view.addConstraint(newConstraint)
view.layoutIfNeeded()
constraintToChange = newConstraint
如何使用 Swift.
更改约束的乘数someConstraint.multiplier = 0.6 // error: 'multiplier' is get-only property
我想知道如何在代码中更改乘数 (Swift)。
由于 multiplier
是只读的 属性 并且您无法更改它,因此您需要用修改后的克隆替换约束。
您可以使用扩展程序来执行此操作,如下所示:
Swift 4/5:
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)
}
}
用法:
let newConstraint = constraintToChange.constraintWithMultiplier(0.75)
view.removeConstraint(constraintToChange)
view.addConstraint(newConstraint)
view.layoutIfNeeded()
constraintToChange = newConstraint