Menurut NSLayoutConstraints class
di dalam UIKit Module
Jika tingkat prioritas batasan kurang dari UILayoutPriorityRequired, maka itu opsional. Batasan prioritas yang lebih tinggi dipenuhi sebelum batasan prioritas yang lebih rendah. Kepuasan kendala tidak semuanya atau tidak sama sekali. Jika batasan 'a == b' bersifat opsional, itu berarti kami akan mencoba meminimalkan 'abs (ab)'. Properti ini hanya dapat diubah sebagai bagian dari penyiapan awal atau jika opsional. Setelah batasan ditambahkan ke tampilan, pengecualian akan ditampilkan jika prioritas diubah dari / ke NSLayoutPriorityRequired.
Contoh: - UIButton
kendala dengan berbagai prioritas -
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])
}