ios UILable自包裹
ContentHuggingPriority与ContentCompressionResistancePriority的使用
参考:https://www.jianshu.com/p/d1258a9dec11
参考:https://www.jianshu.com/p/62c5bdef1055
在项目中,我经常用 masonry 布局页面,常常遇到两个 label 宽度不相等造成的显示问题,下面来总结一下:
现左右两个Label的宽度不相等,此时需要根据设置setContentHuggingPriority 和 setContentCompressionResistancePriority 来控制哪边的 label 拉伸,哪边的 label 收缩。
先说明一下:
ContentHuggingPriority ==> 表示当前的Label的内容不想被拉伸
ContentCompressionResistancePriority ==> 表示当前的Label的内容不想被收缩
默认情况下: HuggingPriority == 250, CompressionResistancePriority == 750
需要考虑两种情况:
1、左右两边数据均不足的时候,谁拉伸?
2、左右两边数据均充足的时候,谁收缩?
左右两边数据均不足的时候,谁拉伸:
这个由HuggingPriority控制。
如果想让左边的内容拉伸,就设置左边的数值<250(或让右边的>250);如果想让右边的内容拉伸,就设置右边的数值<250 (或让左边的>250)。左右两个Label对比,数值越大,越不想被拉伸,结果也不会被拉伸;数值越小,越容易被拉伸。
左右两边数据都充足的时候,谁收缩:
这个由ContentCompressionResistancePriority控制。如果想让左边的内容收缩,就设置左边的数值<750(或让右边的>750);如果想让右边的内容收缩,就设置右边的数值<750(或让左边的>750)。
这个由ContentCompressionResistancePriority控制。如果想让左边的内容收缩,就设置左边的数值<750(或让右边的>750);如果想让右边的内容收缩,就设置右边的数值<750(或让左边的>750)。
总结:
//1、水平方向自包裹>250 2、自动拉伸即:铺满全行(沾满剩余的所有空间)。 <250 //[titleInfoLable setContentHuggingPriority:260 forAxis:UILayoutConstraintAxisHorizontal]; [titleInfoLable setContentHuggingPriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal]; titleInfoLable.backgroundColor=[UIColor redColor];
1.Content Hugging Priority
视图抗拉伸优先级,
值越小,视图越容易被拉伸,
2. Content Compression Resistance Priority:
视图抗压缩优先级,
值越小,视图越容易被压缩,