Intrinsic Content Size

Intrinsic Content Size:直译过来是固定内容尺寸,它是autolayout里的一个重要概念。大多数控件有能力根据自己的内容决定自己的size,比如UILabel根据文本可以确定自己的宽度和高度,这被称作固定内容尺寸。通常,使用Intrinsic Content Size需要设置view的 Content Compression Resistance PriorityContent Hugging Priority
新建一个工程,在storyboard里拖入一个Label;并且添加距离上间距和左间距的约束:

第一个label

放置第二个label,给第二个label添加左间距,上间距和右间距的约束:
第二个label

上面并没有给两个label设置宽和高的约束,
这两个label的宽高现在是根据它的文本获得的。我们把第一个label的文本改成A:
屏幕快照 2018-03-01 上午10.18.36.png

这时候会有Content Priority Ambigulty的错误。由于两个label都没有固定的宽度,当其中一个label文本变化需要改变size时,autolayout不知道该如何分配两个label变化的比例。
按照它的提示,需要修改label的content priority,选中第一个label:
屏幕快照 2018-03-01 上午10.29.50.png

查看第二个label,第二个label的Content Hugging Priority和Content Compression Resistance Priority和第一个label是一样的。

  • Content Hugging Priority:这个值越高表示越不容易被拉伸;
  • Content Compression Resistance Priority:这个值越高表示越不容易被压缩;
    我们把第一个label的Content Hugging Priority的Horizontal改成252,此时它的不被拉伸优先级高于第二个label;storyboard变成了下面这样:


    屏幕快照 2018-03-01 上午10.43.04.png

    第二个label会被拉伸。

如果把第二个label的 Content Hugging Priority的值比第一个label设置的高,则第二个label不被拉伸,如下所示:

屏幕快照 2018-03-01 上午10.52.01.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容