2016-05-18 16 views
8

So ändern Sie den Multiplikator einer Einschränkung mit Swift.iOS - Ändern Sie den Multiplikator der Abhängigkeit von Swift

Ich würde gerne wissen, wie man den Multiplikator im Code (Swift) ändern.

+2

erstellen mehrere Constraints mit den verschiedenen Multiplikatoren und Aktivieren/Deaktivieren der richtigen zur richtigen Zeit. – luk2302

+8

http://stackoverflow.com/questions/19593641/can-i-change-multiplier-property-for-nslayoutconstraint –

Antwort

30

Da es sich bei multiplier um eine schreibgeschützte Eigenschaft handelt und Sie sie nicht ändern können, müssen Sie die Einschränkung durch ihren geänderten Klon ersetzen.

Sie können eine Erweiterung schreiben, es zu tun, wie:

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+ Version:

Verbrauch:

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

Vielen Dank für Ihre Antwort! Ich versuche deinen Code zu machen. Aber ich kann nicht erreichen, was ich will, wegen 'self.view!'. Ich habe 'self.view!' In meinem Fall behoben. Aber ich benutze Mr. Andrew Schreibers Art in existierenden "Kann ich die Multiplikatoreigenschaft für NSLayoutConstraint ändern?" Es hat gut funktioniert. Ich musste mehr danach suchen. – redstone

Verwandte Themen