NSLayoutConstraints class
内部に よるとUIKit Module
制約の優先度レベルがUILayoutPriorityRequired未満の場合、それはオプションです。優先度の高い制約は、優先度の低い制約の前に満たされます。制約の満足度は、すべてまたはまったくではありません。制約 'a == b'がオプションの場合、それは 'abs(ab)'を最小化しようとすることを意味します。このプロパティは、初期設定の一部として、またはオプションの場合にのみ変更できます。ビューに制約が追加された後、優先度がNSLayoutPriorityRequiredとの間で変更されると、例外がスローされます。
例:-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])
}