一鉴逞、前言
我們?cè)陂_(kāi)發(fā)中經(jīng)常會(huì)用到Masonry來(lái)實(shí)現(xiàn)自動(dòng)布局,有時(shí)候?qū)崿F(xiàn)兩個(gè)Label橫向排列時(shí)谈山,如果設(shè)置了右側(cè)label距離right的間距蔫饰,則會(huì)出現(xiàn)不連續(xù)的情況疗锐,為此我們需要用下面兩個(gè)參數(shù)來(lái)處理顯示情況
- contentHuggingPriority
抗拉伸
- contentCompressionResistancePriority
抗壓縮
二、效果展示(常規(guī)情況)
- 常規(guī)展示效果搔耕,代碼如下
UILabel *leftLabel = [[UILabel alloc] init];
leftLabel.backgroundColor = [UIColor redColor];
leftLabel.text = @"左側(cè)文字";
leftLabel.textColor = [UIColor whiteColor];
[self.view addSubview:leftLabel];
UILabel *rightLabel = [[UILabel alloc] init];
rightLabel.backgroundColor = [UIColor blueColor];
rightLabel.text = @"右側(cè)文字";
rightLabel.textColor = [UIColor whiteColor];
[self.view addSubview:rightLabel];
[leftLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.offset(10);
make.top.offset(100);
}];
[rightLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(leftLabel.mas_right).offset(10);
make.right.offset(-10);
make.centerY.mas_equalTo(leftLabel);
}];
- 更改文字長(zhǎng)度后的效果
leftLabel.text = @"左側(cè)文字一二三四五六七八九十";
rightLabel.text = @"右側(cè)文字一二三四五六七八九十";
總結(jié):由上可見(jiàn)隙袁,默認(rèn)情況下,1弃榨、在寬度夠的情況下菩收,左側(cè)被拉伸,2鲸睛、在寬度不夠的情況下娜饵,右側(cè)被壓縮
三、設(shè)置后的效果(抗壓縮官辈、抗拉伸)
1箱舞、setContentHuggingPriority
抗拉伸
,這個(gè)值越低拳亿,就會(huì)在寬度多余的情況下晴股,被拉伸,默認(rèn)250
2肺魁、setContentCompressionResistancePriority抗壓縮
电湘,這個(gè)值越低,就會(huì)在寬度不夠的情況下鹅经,被壓縮寂呛,默認(rèn)是750
- 第一種情況,文字短瘾晃,寬度夠用的情況贷痪,如果想讓右側(cè)label顯示滿可以按如下設(shè)置
leftLabel.text = @"左側(cè)文字";
rightLabel.text = @"右側(cè)文字";
// 設(shè)置抗拉伸屬性,left的值大于right的值酗捌,這個(gè)值越低呢诬,就會(huì)在寬度多余的情況下,被拉伸
[leftLabel setContentHuggingPriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal];
[rightLabel setContentHuggingPriority:UILayoutPriorityDefaultLow forAxis:UILayoutConstraintAxisHorizontal];
- 第二種情況胖缤,文字長(zhǎng)尚镰,寬度不夠用的情況下,如果想壓縮左側(cè)left哪廓,可以按如下設(shè)置
leftLabel.text = @"左側(cè)文字一二三四五六七八九十";
rightLabel.text = @"右側(cè)文字一二三四五六七八九十";
// 設(shè)置抗壓縮屬性狗唉,left的值小于right的值,這個(gè)值越低涡真,就會(huì)在寬度不夠的情況下分俯,被壓縮
[leftLabel setContentCompressionResistancePriority:UILayoutPriorityDefaultLow forAxis:UILayoutConstraintAxisHorizontal];
[rightLabel setContentCompressionResistancePriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal];
四肾筐、延展
- 如果想要預(yù)留一定的width,可以使用
mas_greaterThanOrEqualTo
缸剪,這樣就會(huì)有一個(gè)最小的寬度吗铐,針對(duì)第二種情況,如果left想預(yù)留一個(gè)最小的寬度杏节,而不是被一直壓縮唬渗,效果如下
[leftLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.offset(10);
// 最小的寬度
make.width.mas_greaterThanOrEqualTo(@(150));
make.top.offset(100);
}];
[rightLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(leftLabel.mas_right).offset(10);
make.right.offset(-10);
make.centerY.mas_equalTo(leftLabel);
}];
- 如果想設(shè)置一個(gè)最大寬度,可以設(shè)置
mas_lessThanOrEqualTo
奋渔,針對(duì)第二種情況载萌,右側(cè)設(shè)置最大寬度為150蛙讥,可以按如下設(shè)置
[leftLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.offset(10);
make.top.offset(100);
}];
[rightLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(leftLabel.mas_right).offset(10);
make.right.offset(-10);
make.centerY.mas_equalTo(leftLabel);
// 最大的寬度
make.width.mas_lessThanOrEqualTo(@(150));
}];