iOS开发笔记 | 并排的两个label如何优先让其中一个宽度自适应?

iOS开发笔记 | 并排的两个label如何优先让其中一个宽度自适应?_第1张图片
iu

这是最近做项目时遇到的需求,这里记录一下。
如下,左右两个label,需求是优先左边的label宽度自适应,然后右边的label紧挨左边label并且高度自适应。

当右边label的内容较少时是这样的:


当右边label的内容较多时是这样的:


如果我们只设置约束:

    [label1 mas_makeConstraints:^(MASConstraintMaker *make) {
        make.left.mas_equalTo(0);
        make.top.mas_equalTo(400);
        make.height.mas_equalTo(18);
    }];
    
    [label2 mas_makeConstraints:^(MASConstraintMaker *make) {
        make.left.mas_equalTo(label1.mas_right);
        make.top.mas_equalTo(label1);
        make.right.mas_offset(0);
    }];

效果是这样的:


显然不满足需求。

为了优先让左边的label宽度自适应,我们可以设定:左边的label不准扯长。也就是:

    // 水平方向别扯我
    [label1 setContentHuggingPriority:UILayoutPriorityDefaultHigh forAxis:UILayoutConstraintAxisHorizontal];

setContentHuggingPriority可以通俗理解成“别扯我”的优先级,优先级越高,越不能被扯长。

具体可以参考这边文章:IOS开发之Autolayout——“Content Compression Resistance”和“Content Hugging”
作者写得非常实在明了,我就是看这篇学会的。

你可能感兴趣的:(iOS开发笔记 | 并排的两个label如何优先让其中一个宽度自适应?)