根据我的理解,如果我们设置
,考虑有两个标签label1.setContentCompressionResistancePriority(.defaultLow, for: .horizontal)
label2.setContentCompressionResistancePriority(.defaultHigh, for: .horizontal)
那么label1内容将在必要时截断。我想知道什么时候使用。required,因为apple文档中几乎没有解释。
type Property required A required constraint. static let required: UILayoutPriority Discussion Do not specify a layout constraint that exceeds this number.
"UILayoutPriority
"取值范围为"0
"~"1000
"。提供这些常量是为了方便:
.required == 1000
.defaultHigh == 750
.defaultLow == 250
也可以指定其他值。例子:
let p: UILayoutPriority = UILayoutPriority(rawValue: 251)
let p: UILayoutPriority = .defaultHigh + 1 // == 751
let p: UILayoutPriority = .required - 1 // == 999
对于您的特定的场景,没有以下区别:
label1.setContentCompressionResistancePriority(.defaultLow, for: .horizontal)
label2.setContentCompressionResistancePriority(.defaultHigh, for: .horizontal)
// or
label1.setContentCompressionResistancePriority(.defaultLow, for: .horizontal)
label2.setContentCompressionResistancePriority(.required, for: .horizontal)
// or
label1.setContentCompressionResistancePriority(.required - 1, for: .horizontal)
label2.setContentCompressionResistancePriority(.required, for: .horizontal)
等等。只要label1
的优先级小于label2
,label1
优先压缩。
当实际值发挥作用时,或者当您可能想要使用.required
时,是当它们与其他交互时。