Xib同一层级Content Compression Resis
2018-05-27 本文已影响93人
struggle3g
引言
回顾
XIB同一层级,两个Label的Content Hugging Priority
讲了内容环绕优先级,谁的内容环绕优先级高,谁就会当成一个中心点被别人环绕,我就这么点空间,我不会拉伸,如果别人够不到我,就需要别人拉伸来够到我。就是这么个意思。
Content Compression Resistance Priority的含义
中文翻译就是,内容压缩阻力优先级,字面的含义,就是抗压缩的能力高低的优先级。
实际工作中的例子
- 工作当中遇到在一个层级中两个label,蓝色==label3、橙色==label4
- label3设置的约束:leading、top固定,label3的右边会根据内容自适应拉伸
- label4设置的约束:trailing、top固定
- 然后label3根据内容自适应的长度,会直接覆盖掉label4一部分内容
这个在开发过程当中是不被允许的,label4被挡住了
分析原因
- label3是向右根据内容自适应拉伸,左上位置固定
- label4是向左根据内容自适应拉伸,右上位置固定
约束label3与label4之间的固定距离,从而达到label3不会覆盖label4
添加固定间距约束
尼玛报错!
分析原因
图中报错,给出的提示是需要给label3、label4的抗压缩能力优先级提高
当label3的内容向右拉伸的时候超过了跟label4约定的10的间距分两种情况:
- 将label3压缩以适应跟Label4之间固定10的间距
- 将label4压缩以适应跟label3之间固定10的间距
解决方案
-
设置Lable3的抗压缩能力优先级高默认750,现在修改成751.
我们发现,label4被压缩了。并且label3全部显示出来,label3与label4之间的间距为10
-
设置Lable3的抗压缩能力优先级低默认750,现在修改成749.
我们发现,label3被压缩了。并且label4全部显示出来,label3与label4之间的间距为10
结果
-
Content Compression Resistance Priority
抗压缩能力优先级,谁的优先级越高,也就是它的抗压能力越强 - 当两者重叠的时候,固定距离显示、设置它们的间距约束,并想让哪一方全部显示,那么就设置哪一方的
Content Compression Resistance Priority
的值高
例如:A与B重叠,A与B之间存在间距约束:- A全部显示B压缩,设置A的
Content Compression Resistance Priority
>B的Content Compression Resistance Priority
- B全部显示A压缩,设置B的
Content Compression Resistance Priority
>A的Content Compression Resistance Priority
- A全部显示B压缩,设置A的