iOS开发笔记 | 并排的两个label如何优先让其中一个宽度自
2017-06-09 本文已影响887人
无夜之星辰
![](https://img.haomeiwen.com/i1692043/e6423440327d12ce.jpg)
这是最近做项目时遇到的需求,这里记录一下。
如下,左右两个label,需求是优先左边的label宽度自适应,然后右边的label紧挨左边label并且高度自适应。
当右边label的内容较少时是这样的:
![](https://img.haomeiwen.com/i1692043/4752f124cce1d874.png)
当右边label的内容较多时是这样的:
![](https://img.haomeiwen.com/i1692043/72dcac1f093e1fb5.png)
如果我们只设置约束:
[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);
}];
效果是这样的:
![](https://img.haomeiwen.com/i1692043/f0deb9c4ad1a530c.png)
显然不满足需求。
为了优先让左边的label宽度自适应,我们可以设定:左边的label不准扯长。也就是:
// 水平方向别扯我
[label1 setContentHuggingPriority:UILayoutPriorityDefaultHigh forAxis:UILayoutConstraintAxisHorizontal];
setContentHuggingPriority
可以通俗理解成“别扯我”的优先级,优先级越高,越不能被扯长。
具体可以参考这边文章:IOS开发之Autolayout——“Content Compression Resistance”和“Content Hugging”
作者写得非常实在明了,我就是看这篇学会的。