UI开发的时候会遇到两个UILabel并列显示,但是屏幕宽度有限,所以可能会存在不能全部显示的情况,这个时候需要考虑怎么设置约束布局。
有两种方式去处理
使用greaterThanOrEqualTo,lessThanOrEqualTo。需要提供一个确定值
使用setContentHuggingPriority:forAxis: ,setContentCompressionResistancePriority:forAxis:
- setContentHuggingPriority:forAxis: 抗拉伸,值越低,就会在宽度多余的情况下,被拉伸。
- setContentCompressionResistancePriority:forAxis: 抗压缩,值越低,就会在宽度不够的情况下,被压缩。
@interface ViewController ()
@property (nonatomic, strong) UILabel *lLabel;
@property (nonatomic, strong) UILabel *rLabel;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
[self setupViews];
}
- (void)setupViews {
self.view.backgroundColor = [UIColor lightGrayColor];
[self.view addSubview:self.lLabel];
[self.view addSubview:self.rLabel];
[self.lLabel mas_makeConstraints:^(MASConstraintMaker *make) { make.leading.offset(16); make.top.offset(100); make.trailing.mas_equalTo(self.rLabel.mas_leading).offset(-20); }];
[self.rLabel mas_makeConstraints:^(MASConstraintMaker *make) { make.trailing.offset(-16); make.top.offset(100); }];
// //setContentHuggingPriority 抗拉伸,值越低,就会在宽度多余的情况下,被拉伸。
// //setContentCompressionResistancePriority 抗压缩,值越低,就会在宽度不够的情况下,被压缩。
//lLabel全部展示(如果lLabel内容太长,rLabel不会展示)
// [self.lLabel setContentHuggingPriority:(UILayoutPriorityRequired) forAxis:(UILayoutConstraintAxisHorizontal)];
// [self.rLabel setContentCompressionResistancePriority:(UILayoutPriorityFittingSizeLevel) forAxis:(UILayoutConstraintAxisHorizontal)];
//lLabel全部展示(如果lLabel内容太长,rLabel不会展示)
// [self.lLabel mas_updateConstraints:^(MASConstraintMaker *make) {
// make.width.greaterThanOrEqualTo(@0);
// }];
// //rLabel全部展示(如果rLabel内容太长,lLabel不会展示)
// [self.lLabel setContentHuggingPriority:(UILayoutPriorityFittingSizeLevel) forAxis:(UILayoutConstraintAxisHorizontal)];
// [self.rLabel setContentCompressionResistancePriority:(UILayoutPriorityRequired) forAxis:(UILayoutConstraintAxisHorizontal)];
//rLabel全部展示(如果rLabel内容太长,lLabel不会展示)
// [self.rLabel mas_updateConstraints:^(MASConstraintMaker *make) {
// make.width.greaterThanOrEqualTo(@0);
// }];
// //两个都展示,写在前面的会优先展示更多内容
// [self.lLabel mas_updateConstraints:^(MASConstraintMaker *make) {
// make.width.greaterThanOrEqualTo(@100);
// }];
// [self.rLabel mas_updateConstraints:^(MASConstraintMaker *make) {
// make.width.greaterThanOrEqualTo(@100);
// }];
// //这里指定谁压缩,不写就看上面的顺序
// [self.lLabel setContentCompressionResistancePriority:(UILayoutPriorityFittingSizeLevel) forAxis:(UILayoutConstraintAxisHorizontal)];
// //lLabel设置最大宽度
// [self.lLabel mas_updateConstraints:^(MASConstraintMaker *make) {
// make.width.lessThanOrEqualTo(@100);
// }];
// //rLabel设置最大宽度
// [self.rLabel mas_updateConstraints:^(MASConstraintMaker *make) {
// make.width.lessThanOrEqualTo(@100);
// }];
self.lLabel.text = @"asdasdajladdawwwdasadadadsadasdadakladdn";
self.rLabel.text = @"addhjkhkhkhkhkjsdsaadaad";
}
- (UILabel *)lLabel {
if (!_lLabel) {
_lLabel = [UILabel new];
_lLabel.textColor = [UIColor greenColor];
_lLabel.backgroundColor = [UIColor orangeColor];
}
return _lLabel;
}
- (UILabel *)rLabel {
if (!_rLabel) {
_rLabel = [UILabel new];
_rLabel.textColor = [UIColor redColor];
_rLabel.textAlignment = NSTextAlignmentRight;
_rLabel.backgroundColor = [UIColor blueColor];
}
return _rLabel;
}
@end