Label尺寸自适应与AutoLayout问题小结
一般我们写UILabel等控件的自适应代码为
[label mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(0);
make.top.mas_equalTo(0);
}];
这样宽度和高度就可以自适应,但是在label的水平方向和竖直方向有其他控件的时候需要依赖label,比如两个label一左一右
[labelLeft mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(0);
make.top.mas_equalTo(0);
}];
[labelRight mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(label1.mas_right);
make.top.mas_equalTo(0);
make.right.mas_offset(0);
}];
实际效果出来是这样的
想要的结果是
左边文字的宽度会大于实际宽度, 需要设置左边的label优先自适应
[labelLeft setContentHuggingPriority:UILayoutPriorityFittingSizeLevel forAxis:UILayoutConstraintAxisHorizontal];
通过设置水平/垂直布局优先级就可以解决,高度也是同理,不在赘述。