iOS: cambia el multiplicador de la restricción por Swift

Cómo cambiar el multiplicador de una restricción usando Swift.

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

Me gustaría saber cómo cambiar el multiplicador en el código (Swift).

Como el multiplier es propiedad de solo lectura y no puede cambiarlo, debe replace la restricción con su clon modificado.

Puede escribir una extensión para hacerlo, como:

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

Versión 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) } } 

Uso:

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