Label尺寸自适应与AutoLayout问题小结

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];

通过设置水平/垂直布局优先级就可以解决,高度也是同理,不在赘述。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容