多个label,一个显示完全,一个可压缩情况下使用Masonry
2017-11-21 本文已影响144人
向晚forever
左右两个Lab,左边的leftLab必须要现实完全;右边的rightLab距左边10pt,据右屏幕15pt。
要是先这个需求,如果只设置
[rightLab mas_makeConstraints:^(MASConstraintMaker *make) {
make.centerY.equalTo(self.view);
make.left.equalTo(leftLab.mas_right).offset(10);
make.right.equalTo(self.view).offset(-15);
}];
是不行的,你会发现当字体太长了,leftLab压缩了;文字太少了,又有问题。
这个时候你需要设置
[leftLab setContentCompressionResistancePriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal];//不可以被压缩,尽量显示完整
[rightLab setContentCompressionResistancePriority:UILayoutPriorityFittingSizeLevel forAxis:UILayoutConstraintAxisHorizontal];//宽度不够时,可以被压缩
//设置右边lab的约束 ,一定要设置优先级,优先级一般按照你的需求来
[rightLab mas_makeConstraints:^(MASConstraintMaker *make) {
make.centerY.equalTo(self.view);
make.left.equalTo(leftLab.mas_right).offset(10).priorityHigh();
make.right.equalTo(self.view).offset(-15).priorityLow();
}];
这样就OK了
还有一个相同的抗拉伸的方法
[lab setContentHuggingPriority:UILayoutPriorityRequired/*抱紧*/
//forAxis:UILayoutConstraintAxisHorizontal];