但是如果加入一个约束:“width最少也大于200”,并且给这个约束设置优先级比 “右边要比父控件少50” 的优先级高,代码如下
1
2
3
4
5
6
|
[contentLbl2 mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.and.top.equalTo(blackView).with.offset(10);
make.width.greaterThanOrEqualTo(
@200
).priority(900);
make.right.equalTo(blackView).with.offset(-50).priority(800);
make.height.equalTo(
@30
);
}];
|
//优惠后金额
[_PurchaseCostmas_makeConstraints:^(MASConstraintMaker *make) {
make.right.equalTo(_fatherView.mas_right).with.offset(-11);
// make.width.equalTo(@(self.width/3));
make.bottom.equalTo(_Date.mas_bottom).with.offset(0);
make.width.lessThanOrEqualTo(@((kScreenWidth-150)*2/3));
make.height.equalTo(@(17));
}];
抗压缩还有另一种设置方法
1
2
3
4
5
6
7
|
[contentLbl2 mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.and.top.equalTo(blackView).with.offset(10);
make.right.equalTo(blackView).with.offset(-50).priority(990);
make.height.equalTo(
@30
);
}];
[contentLbl2 setContentCompressionResistancePriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal];
|
设置“右边要比父控件少50” 的优先级为1000以下, 然后在下面再写上一行水平方向抗压缩的代码。 这里要注意上面的“右边比父控件少50”优先级不能不写,因为Masonry这种类型的代码默认优先级都是1000,而下面UILayoutPriorityRequired的优先级也是1000,那么下面的代码就不起效果了。
其实还有更简单的设置方法,不用写水平方向抗压缩,只需要将上面约束后面的优先级改到750以下
1
2
3
4
5
|
[contentLbl2 mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.and.top.equalTo(blackView).with.offset(10);
make.right.equalTo(blackView).with.offset(-50).priority(749);
make.height.equalTo(
@30
);
}];
|
因为优先级750对应的优先级枚举是UILayoutPriorityDefaultHigh,可以理解成Masonry本身就有一种抗压缩的保护,优先级是750。
1
|
[contentLbl2 setContentCompressionResistancePriority:UILayoutPriorityDefaultHigh forAxis:UILayoutConstraintAxisHorizontal];
|
这行代码应该是所有label默认存在的。
所以以后如果想让Label抗压缩,直接把优先级设置到750以下就OK了。
[self.tableView mas_makeConstraints:^(MASConstraintMaker *make) {
make.edges.mas_equalTo(self.view); //边界
}];
//一段代码解决 与最外的view边框对齐 约速了self.tableView的大小