Xib同一层级Content Compression Resistance Priority问题

Xib同一层级Content Compression Resistance Priority问题_第1张图片

引言

回顾

XIB同一层级,两个Label的Content Hugging Priority
讲了内容环绕优先级,谁的内容环绕优先级高,谁就会当成一个中心点被别人环绕,我就这么点空间,我不会拉伸,如果别人够不到我,就需要别人拉伸来够到我。就是这么个意思。

Content Compression Resistance Priority的含义

中文翻译就是,内容压缩阻力优先级,字面的含义,就是抗压缩的能力高低的优先级。

实际工作中的例子

Xib同一层级Content Compression Resistance Priority问题_第2张图片
  • 工作当中遇到在一个层级中两个label,蓝色==label3、橙色==label4
    1. label3设置的约束:leading、top固定,label3的右边会根据内容自适应拉伸
    2. label4设置的约束:trailing、top固定
  • 然后label3根据内容自适应的长度,会直接覆盖掉label4一部分内容
    这个在开发过程当中是不被允许的,label4被挡住了

分析原因

  • label3是向右根据内容自适应拉伸,左上位置固定
  • label4是向左根据内容自适应拉伸,右上位置固定
    约束label3与label4之间的固定距离,从而达到label3不会覆盖label4

添加固定间距约束

Xib同一层级Content Compression Resistance Priority问题_第3张图片

尼玛报错!


Xib同一层级Content Compression Resistance Priority问题_第4张图片

分析原因

图中报错,给出的提示是需要给label3、label4的抗压缩能力优先级提高
当label3的内容向右拉伸的时候超过了跟label4约定的10的间距分两种情况:
- 将label3压缩以适应跟Label4之间固定10的间距
- 将label4压缩以适应跟label3之间固定10的间距

解决方案

  • 设置Lable3的抗压缩能力优先级高默认750,现在修改成751.


    Xib同一层级Content Compression Resistance Priority问题_第5张图片

    我们发现,label4被压缩了。并且label3全部显示出来,label3与label4之间的间距为10

  • 设置Lable3的抗压缩能力优先级低默认750,现在修改成749.


    Xib同一层级Content Compression Resistance Priority问题_第6张图片

    我们发现,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

你可能感兴趣的:(Xib同一层级Content Compression Resistance Priority问题)