NSLayoutConstraints class
İçeriye göreUIKit Module
Bir kısıtlamanın öncelik seviyesi UILayoutPriorityRequired değerinin altındaysa, isteğe bağlıdır. Daha yüksek öncelikli kısıtlamalar, daha düşük öncelikli kısıtlamalardan önce karşılanır. Kısıt tatmini ya hepsi ya da hiç değildir. Bir 'a == b' kısıtlaması isteğe bağlıysa, bu, 'abs (ab)' yi en aza indirmeye çalışacağımız anlamına gelir. Bu özellik yalnızca ilk kurulumun bir parçası olarak veya isteğe bağlı olduğunda değiştirilebilir. Bir görünüme bir kısıtlama eklendikten sonra, öncelik NSLayoutPriorityRequired olarak değiştirilirse bir istisna atılır.
Örnek: - UIButton
çeşitli önceliklere sahip kısıtlamalar -
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])
}