Nach NSLayoutConstraints class
innen UIKit Module
Wenn die Prioritätsstufe einer Einschränkung unter UILayoutPriorityRequired liegt, ist sie optional. Einschränkungen mit höherer Priorität werden vor Einschränkungen mit niedrigerer Priorität erfüllt. Constraint-Zufriedenheit ist nicht alles oder nichts. Wenn eine Einschränkung 'a == b' optional ist, bedeutet dies, dass wir versuchen werden, 'abs (ab)' zu minimieren. Diese Eigenschaft darf nur im Rahmen der Ersteinrichtung oder optional geändert werden. Nachdem einer Ansicht eine Einschränkung hinzugefügt wurde, wird eine Ausnahme ausgelöst, wenn die Priorität von / in NSLayoutPriorityRequired geändert wird.
Beispiel: - UIButton
Einschränkungen mit verschiedenen Prioritäten -
func setConstraints() {
buttonMessage.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint(item: buttonMessage, attribute: .bottom, relatedBy: .equal, toItem: view, attribute: .bottom, multiplier: 1.0, constant: -10).isActive = true
let leading = NSLayoutConstraint(item: buttonMessage, attribute: .leading, relatedBy: .equal, toItem: view, attribute: .leading, multiplier: 1.0, constant: 10)
leading.isActive = true
let widthConstraint = NSLayoutConstraint(item: buttonMessage, attribute: NSLayoutAttribute.width, relatedBy: NSLayoutRelation.equal, toItem: nil, attribute: NSLayoutAttribute.notAnAttribute, multiplier: 1, constant: 100)
let heightConstraint = NSLayoutConstraint(item: buttonMessage, attribute: NSLayoutAttribute.height, relatedBy: NSLayoutRelation.equal, toItem: nil, attribute: NSLayoutAttribute.notAnAttribute, multiplier: 1, constant: 50)
let trailingToSuperView = NSLayoutConstraint(item: buttonMessage, attribute: .trailing, relatedBy: .equal, toItem: view, attribute: .trailing, multiplier: 1, constant: 0)
trailingToSuperView.priority = 999
trailingToSuperView.isActive = true
buttonMessage.addConstraints([widthConstraint,heightConstraint])
}