Ich halte Verweise auf meine NSLayoutConstraint
Wie kann ich zuvor deaktivierte Constraint aktivieren?
var flag = true
@IBOutlet weak var myConstraint: NSLayoutConstraint!
Dann für einige @IBAction
ich aktivieren/deaktivieren je nach meinen flag
Variable:
@IBAction func tapped(sender: UIButton) {
flag = !flag
UIView.animateWithDuration(1.0) {
if self.flag {
NSLayoutConstraint.activateConstraints([self. myConstraint])
} else {
NSLayoutConstraint.deactivateConstraints([self. myConstraint])
}
}
}
Aber wenn ich noch einmal meine Aktion nennen, ich habe einen Fehler unexpectedly found nil while unwrapping an Optional value
für .
Mehr darüber animiert nicht. Was mache ich falsch?
Ich folge Tutorial von WWDC 2015:
behalten Sie eine starke Referenz des Objekts in IBOutlet-Deklaration. '@IBOutlet stark var myConstraint: NSLayoutConstraint!' – Gandalf
Gandalfs Kommentar ist korrekt. Durch das Deaktivieren einer Einschränkung muss die Ansichtshierarchie ihre Eigentümerschaft freigeben. Wenn Sie keine starke Referenz beibehalten, wird die Zuordnung aufgehoben. @ Gandalf, du solltest dies eine Antwort machen, damit das OP es akzeptieren kann. –