这两个优先级属性都是用在iOS开发时Auto Layout布局中的。
到公众号【iOS开发栈】学习更多SwiftUI、iOS开发相关内容。
Content Hugging Priorities
Content Hugging Priorities:在Auto Layout中,当子视图不足以填充满空间时,优先满足此属性值较大的子视图的内容展示,而拉伸属性值较低的子视图。
假设有这样一种情况,两个水平排列的UILabel中分别显示“斜杠程序员”和“www.iosprogrammer.tech“,给它们加上5个约束,其中2、3、5是水平约束,假设这3个水平约束的值都是10.
现在两个UILabel里面文字内容所占大小加上3个水平约束的值仍然小于(<)父视图的宽度。此时会发现storyboard中有报错,但是我们仍然可以正常运行项目并看到展示结果。
我们可以看到“www.iosprogrammer.tech“所在label所占的空间变大了。此时设置这个label的Content Hugging Priorities为750。
“www.iosprogrammer.tech“所在label刚好满足展示内容,而“斜杠程序员”所在label所占空间变大了。
这也就是Content Hugging Priorities的作用,控制当内容不足以填充满空间时,优先满足此属性值较大的子view的内容展示,而拉伸属性值较低的子view。
Content Compression Resistance Priorities
Content Compression Resistance Priorities:在Auto Layout中,当子视图所需的内容超出父视图的空间时,优先展示此值较大的子视图,而省略压缩此值较小的子视图。
假设有这样一种情况,两个水平排列的UILabel中分别显示“斜杠程序员专注于提高编程能力”和“斜杠程序员的官方网站是www.iosprogrammer.tech“,给它们加上5个约束,其中2、3、5是水平约束,假设这3个水平约束的值都是10.
现在两个UILabel里面文字内容所占大小超过了父视图的宽度。此时会发现storyboard中有报错,但是我们仍然可以正常运行项目并看到展示结果。
第一个Label被压缩了,里面的文字被省略了;第二个label正常展示了出来。此时我们把第一个label的Content Compression Resistance Priorities设置到大于第二个label。
可以看到第二个label被压缩了,第一个label正常展示了出来。
Content Compression Resistance Priorities:在Auto Layout中,当子视图所需的内容超出父视图的空间时,优先展示此值较大的子视图,而省略压缩此值较小的子视图。
到公众号【iOS开发栈】学习更多SwiftUI、iOS开发相关内容。