CompressionResistance 和 PriorityHuggingPrioritycontent
hugging 这个约束条件,会尽可能压缩视图,使其紧贴内容;
compression resistance 这个约束条件,会尽可能向外扩大视图,是内容尽可能不会被裁剪。
Content Compression Resistance = 不许挤我!
对,这个属性说白了就是“不许挤我”=。=
这个属性的优先级(Priority)越高,越不“容易”被压缩。也就是说,当整体的空间装不下所有的View的时候,Content Compression Resistance优先级越高的,显示的内容越完整。
Content Hugging = 抱紧!
这个属性的优先级越高,整个View就要越“抱紧”View里面的内容。也就是View的大小不会随着父级View的扩大而扩大。一般用于 UILabel 之类的控件。
比如现在有一个 label 和一个 view,两者水平相邻,我们想要让 label 尺寸根据内容变化,左边跟容器保持固定间距,右侧跟 view 保持固定间距,view 的右侧跟容器的右侧保持固定间距。就像下面这样:
┏━━━━━━━━━━━━━━━━━━━━━━┓
┃ ┏━━━━━━━┓ ┏━━━━━━━┓ ┃
┃ ┃ label ┃ ┃ view ┃ ┃
┃ ┗━━━━━━━┛ ┗━━━━━━━┛ ┃
┗━━━━━━━━━━━━━━━━━━━━━━┛
1.自适应宽度,则不设置label的宽度
2.进行label的多行显示设置时,主要是如下三个方面的设置
//给一个maxWidth
label.preferredMaxLayoutWidth = width;
//设置换行
label.numberOfLines = 0;
//设置huggingPriority(高度)
[label setContentHuggingPriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisVertical];
//设置huggingPriority(宽度)不够时;足够时
[label setContentCompressionResistancePriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal];
[label setContentHuggingPriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal];