在setContentCompressionResistancePriority中何时使用UILayoutPriority.required?
UILayoutPriority.required 适用场景说明
.required是Auto Layout体系下的最高优先级,固定数值为1000,官方给出的定义如下:
类型属性 required 代表必填约束。
static let required: UILayoutPriority
说明:请勿指定优先级超过该数值的布局约束。
核心适用场景
- 核心必达约束配置:所有你认为无论如何都不能被打破的布局规则,都可以设置为该优先级。比如登录页的登录按钮高度必须固定为48pt、弹窗视图距离屏幕左右边距必须为16pt等,系统会优先满足该级别的约束,不会为了适配其他低优先级约束主动打破它。
- 内容不可截断的抗压缩/抗拉伸场景:如果某个文本类控件的内容必须完整展示,绝对不允许出现截断,就可以将对应方向的抗压缩优先级设置为
.required。比如你提到的双label布局场景,如果把label2的水平抗压缩优先级设置为.required,那么无论剩余空间有多小,系统都会完整展示label2的内容,只会压缩甚至完全截断label1的内容。 - 布局逻辑校验:
.required级别的约束如果出现冲突,系统会直接在控制台抛出布局冲突错误。你可以将核心布局规则设置为该优先级,快速排查错误的约束配置,避免核心布局逻辑被意外添加的低优先级约束覆盖。
注意事项
不要滥用.required优先级,只有确定需要100%生效的约束才使用该等级,否则很容易出现不必要的布局冲突报错。
内容的提问来源于stack exchange,提问作者AppleDeveloper
相关产品推荐
相关产品推荐

