如何使用Swift更改限制条件的乘数。
someConstraint.multiplier = 0.6 // error: 'multiplier' is get-only property
我想知道如何在代码中更改乘数(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
self.view!
。在我的情况下,我已经解决了 self.view!
的问题。但是在现有的“Can i change multiplier property for NSLayoutConstraint?”中,我使用了Andrew Schreiber先生的方法,它运行得很好。我需要更多地搜索它。 - ryoaddConstraint(self.constraintToChange = newConstraint)
? - ScottyBladesconstraint.isActive = true/false
代替removeConstraint
和addConstraint
方法。API表示:"在开发iOS 8.0或更高版本时,应将约束的isActive属性设置为true,而不是直接调用addConstraint(_ :)方法。isActive属性会自动从正确的视图中添加和删除约束。" - Zhou Haibo