Poiché multiplier
è una proprietà di sola lettura e non è possibile modificarlo, è necessario sostituire il vincolo con il clone modificato.
È possibile scrivere un'estensione per farlo, come:
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+ Versione:
Usage:
var newConstraint = self.constraintToChange.constraintWithMultiplier(0.75)
self.view!.removeConstraint(self.constraintToChange)
self.view!.addConstraint(self.constraintToChange = newConstraint)
self.view!.layoutIfNeeded()
creare più vincoli con i diversi moltiplicatori e attivare/disattivare quelli giusti al momento giusto. – luk2302
http://stackoverflow.com/questions/19593641/can-i-change-multiplier-property-for-nslayoutconstraint –