Theo NSLayoutConstraints class
trong UIKit Module
Nếu mức độ ưu tiên của ràng buộc nhỏ hơn UILayoutPosystemRequired thì nó là tùy chọn. Các ràng buộc ưu tiên cao hơn được đáp ứng trước các ràng buộc ưu tiên thấp hơn. Sự thỏa mãn ràng buộc không phải là tất cả hoặc không có gì. Nếu một ràng buộc 'a == b' là tùy chọn, điều đó có nghĩa là chúng tôi sẽ cố gắng giảm thiểu 'abs (ab)'. Thuộc tính này chỉ có thể được sửa đổi như một phần của thiết lập ban đầu hoặc khi tùy chọn. Sau khi một ràng buộc đã được thêm vào một dạng xem, một ngoại lệ sẽ được ném ra nếu mức độ ưu tiên được thay đổi từ / thành NSLayoutPosystemRequired.
Ví dụ: - các UIButton
ràng buộc với các ưu tiên khác nhau -
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])
}