NSLayoutConstraints class
내부 에 따르면UIKit Module
제약 조건의 우선 순위 수준이 UILayoutPriorityRequired보다 작 으면 선택 사항입니다. 더 높은 우선 순위 제한이 낮은 우선 순위 제한보다 먼저 충족됩니다. 제약 만족은 전부 또는 전부가 아닙니다. 제약 조건 'a == b'가 선택 사항이면 'abs (ab)'를 최소화하려고 시도합니다. 이 속성은 초기 설정의 일부로 또는 선택 사항 인 경우에만 수정할 수 있습니다. 제약 조건이 뷰에 추가 된 후 우선 순위가 NSLayoutPriorityRequired에서 /로 변경되면 예외가 throw됩니다.
예 :- UIButton
다양한 우선 순위의 제약-
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])
}