iOS开发 - Content hugging priority & Content compression resistance priority

时间:2023-03-09 08:06:00
iOS开发 - Content hugging priority & Content compression resistance priority

1. 什么是Content hugging priority

你可以把它想象成一根放在视图上的橡皮筋。

这根橡皮筋会组织视图超过它本身的固有大小(intrinsic content size)。

它存在一个优先级,从0到1000。

1000表示视图绝对不能超过intrinsic content size。

我们来看个例子:

iOS开发 - Content hugging priority & Content compression resistance priority

上图中有两个横向排列的标签控件(label),并且你也已经设置好了约束。

这个会工作正常,直到父视图变宽的时候。

那么,问题来了。

如果父视图变宽了,那个label应该变宽呢?

这个时候正是我们用到Content hugging priority的时候。

拥有高优先级Content hugging priority的视图控件将不会被拉伸。

你可以把这个优先级想象成橡皮筋的抗拉伸力。

这个优先级越大,视图将越希望保持自己的固有大小(intrinsic content size)。

2. Content compression resistance priority

和Content hugging priority相反,Content compression resistance priority是用来抵抗压缩的。

简单的来说,前者我们讨论过的,是抵抗拉伸,也就是抵抗变大,而后者是抵抗压缩,也就是抵抗变小。

还是上面的例子中,当父视图变小的时候,拥有高优先级的label将不会被压缩,因而标签上的文本也就不会被截断。