對(duì)于UIView 里面的Content Hugging 與 Content Compression Resistance的用法在手寫(xiě)AutoLayout的時(shí)候經(jīng)常用到胶哲,自己用的稀里糊涂的层扶,就去找資料學(xué)習(xí)厕鹃,實(shí)踐下;在這里記錄下來(lái),加深自己的印象。刊懈。如果有地方說(shuō)錯(cuò)了,請(qǐng)朋友們指出...
再說(shuō)上面兩個(gè)前娃闲,先說(shuō)下 intrinsicContentSize和invalidateIntrinsicContentSize 虚汛; intrinsicContentSize 獲取view的原本大小皇帮;?invalidateIntrinsicContentSize 廢除視圖原本內(nèi)容的size
Content Hugging指的是view拒絕拉伸卷哩。Priority 優(yōu)先級(jí)越高,view越難被拉伸属拾。
而Content Compression Resistance 指的是view拒絕壓縮內(nèi)置空間将谊。Priority越高冷溶,view的內(nèi)置空間會(huì)越難被壓縮。而這里的內(nèi)置空間瓢娜,就是上面說(shuō)的view的intrinsicContentSize挂洛。
例如:我想做兩個(gè)label 礼预,文字是有對(duì)齊的眠砾。但是用Masonry 添加完約束后得到下面的結(jié)果:如圖-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的內(nèi)置大小被拉伸了。我們需要的是拉伸label1的內(nèi)置大小托酸。
[label1 setContentHuggingPriority:UILayoutPriorityDefaultHigh forAxis:UILayoutConstraintAxisHorizontal];
這是時(shí)候把label1 的Content Hugging設(shè)為UILayoutPriorityDefaultHigh ?這時(shí)候兩個(gè)label變成了如下圖-2的模樣褒颈。就是說(shuō)label1 拒絕了被拉伸
關(guān)于Content Compression Resistance使用的例子,以后會(huì)補(bǔ)上...