iOS:自动版式,内在内容大小,内容拥抱优先级,内容压缩抵抗优先级

1.本质内容大小:

在设定UILabel的自动版面时,我们只需给定对应superView的Leading and top,不需给定宽与高,就​​可以决定UILabel的位置。原因就是内在内容大小的关系,内在内容大小计算了UILabel内在文字的CGRect决定了本身的宽与高的值。

2.内容拥抱优先级:

解释:抗拉伸优先级,优先权超过越不会延展展开来

例如:左边ID标签跟右边邮件标签,期望在其中一个标签过长时不要互相交叠到,并且他们之间的距离为20 pt。但在设定约束条件的过程中我们发现这样是不可行的,原因为不知道要让那一个UILabel的宽度拉长(如果没有一个Label被拉长,他们之前不可能为20pt)。

上图为对电子邮件标签的内容拥抱水平优先级进行调整,使用邮件标签的优先权> ID标签。通过这样的设置后可以使电子邮件标签不被延展被延展,换句话说优先权越低越会被延展来。

3.内容压缩抗性优先级:

解释:抗压缩优先权,优先权较高越不容易被压缩

延续标题2的设定,如果此时ID标签过长又会出现约束错误,原因是遵循内在内容大小我们可以知道个别的UILabel宽度为多少,但是这样的设定UILabel之间的距离就不可能为20(假设萤幕宽度为375,ID标签宽度300,Mail标签宽度150)。

如果我们希望ID标签不要被压缩到内容压缩阻力优先级水平的优先权就要继承,反之亦然。