一道面试题
一个cell中左边有一个label一个标签(紧挨着label右边),右边有一个图标
label文字不固定
布局的时候要求label宽度随文字变化
但是标签右侧与图标左侧有最小间距
好了我们来捋一捋这个问题
基本的约束就不扯了
主要说一下label宽度怎么约束的问题
先上结论
make.right.lessThanOrEqualTo(图标.mas_left).offset(-最小间距);
make.width.mas_equalTo(计算出来的宽度).priority(999);
这里我设置了label的宽度为文字的宽度
但是优先级低于与图标间距大于12(实际应该由标签宽度与间距确定,这里假定标签内容固定)这一约束
因此在约束不冲突的时候label宽度自适应文字
在文字过长的时候会省略尾部文字以保持间距
在标签内容也不固定的情况下
如果我们优先展示全部的标签内容
标签布局的时候右侧间距需要设置成
make.right.lessThanOrEqualTo(icon.mas_left).offset(-12.0f);
由于label的宽度优先级较低
因此当label文字过长的时候会压缩label的宽度
左侧对齐设置成
make.left.equalTo(label.mas_right).priority(999);