iOS Content Hugging与Content Compression Resistance

对于UIView 里面的Content Hugging 与 Content Compression Resistance的用法在手写AutoLayout的时候经常用到,自己用的稀里糊涂的,就去找资料学习,实践下;在这里记录下来,加深自己的印象。。如果有地方说错了,请朋友们指出...

再说上面两个前,先说下 intrinsicContentSize和invalidateIntrinsicContentSize ; intrinsicContentSize 获取view的原本大小; invalidateIntrinsicContentSize 废除视图原本内容的size

Content Hugging指的是view拒绝拉伸。Priority 优先级越高,view越难被拉伸。

而Content Compression Resistance 指的是view拒绝压缩内置空间。Priority越高,view的内置空间会越难被压缩。而这里的内置空间,就是上面说的view的intrinsicContentSize。

例如:我想做两个label ,文字是有对齐的。但是用Masonry 添加完约束后得到下面的结果:如图-1

图-1

label 如下

[label1 mas_makeConstraints:^(MASConstraintMaker*make) {

make.top.mas_equalTo(0);

make.trailing.mas_equalTo(-10);

make.bottom.mas_equalTo(0);

make.left.mas_equalTo(label2.mas_right).with.offset(4);

}];

[label2 mas_makeConstraints:^(MASConstraintMaker*make) {

make.top.mas_equalTo(0);

make.bottom.mas_equalTo(0);

make.leading.mas_equalTo(10);

}];

可以看到是label2的内置大小被拉伸了。我们需要的是拉伸label1的内置大小。

[label1 setContentHuggingPriority:UILayoutPriorityDefaultHigh forAxis:UILayoutConstraintAxisHorizontal];

这是时候把label1 的Content Hugging设为UILayoutPriorityDefaultHigh  这时候两个label变成了如下图-2的模样。就是说label1 拒绝了被拉伸

图-2

关于Content Compression Resistance使用的例子,以后会补上...

你可能感兴趣的:(iOS Content Hugging与Content Compression Resistance)