Jul 30, 2017 · 4 min read
它是什么?
一些视图有content但是真的没有任何推荐的尺寸。例如像带一个背景色的UIView,这个颜色并不在乎或者关心它的尺寸是多大

但是一些content有一个推荐的size。
如果你呈现一个图像120 pix的,它能被放大或缩减到其他大小,但是它有一个本身的大小(120 * 120),这对于图像而言十分明显,但是对于一些类型的conten而言,也尤为重要

例如你有一个label带有文本(有字体大小),但是label有本身的大小将去呈现所有的它的content
##Hugging and Compression 拥抱和压缩
说简单点,就是离我近一些,离我远一点的意思。
如果自动布局系统正在尝试标定一个视图的大小与它的content的本身大小不同。
这里有二种概念要演示
Content hugging 和compression resistancecontent Hugging
不想grow
content Hugging定义了期望一个视图不再比它的本身size更大
考虑content hugging ,视图的边缘不想让其走。
原则:
1,宽度小于或者等于本身的宽度
2,高度小于或者等于本身的高度
content Compression Resistance:不想压缩
它定义了期望视图不比它本身 的size小

有本身大小的每个视图有四个属性在它上面定义。
原则
1,宽度大于或者等于本身的宽度
2,高度大于或者等于本身的高度
3,在垂直方向,相同的申请对于高度,创建了第三个和第四个原则
优先级
现在举个例子,如果你有100pix宽度可用,并且二个label使用本身的size去边靠边,总共大于100pixels,你将不能以它们本身的size去完全显示它们。

这个时候,就需要考虑优先级了。在这个例子中,我们需要使用的是水平compression 阻尼优先级去决定那个label一个减小它的宽度。
这是仅有的本身content size的部分约束(你所能控制的)你能设置水平方向或者垂直方向的compression resistance 还有content hugging 约束。
### 本身content size
size去匹配你的content
如果我没有使用text,但是使用的是一个图片
本身contentsize对于button是比较后则那个药的,因为当你tap在那个button上的时候,button的size也将决定这个hit对象的大小,因此这或许是事情*本身content 的size是太小)你想hit 目标被更大。Button真的应该有一个最小值(在44 * 44 的高度内)因此,如果你的Button内的文字,你明白的,你仅仅匹配它以30points,然后为了制造一个合适的hit target你或许需要指定button的大小比它本身的content size更大。
对于label而言,默认的背景色是clear,因此很多时候它真的不用关心很多,或者你不能真正地告诉一个label是否被指定大小比它的本身的content大小更大,除了文本被展示的地方外。因此它起初这个标签被指定大小后是不明显的(和屏幕宽度一致),或者如果你有文本居中,它足够大。当然你有一个背景色,很多时候你可以采用这个特性来观察label边到边之间。