- UILabel 下使用Masonry无法换行 之 preferredMaxLayoutWidth
//初始化 UILabel
_shopDesLab = [[UILabel alloc] init];
_shopDesLab.numberOfLines = 0;
_shopDesLab.lineBreakMode = NSLineBreakByWordWrapping;
_shopDesLab.font = kFont;
//利用Masonry进行约束
//有bug的写法,文本超出行宽无法进行换行
CGFloat height = @"根据字符串计算出Lable的准确高度";
[_shopDesLab mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(self);
make.left.right.equalTo(self);
make.height.offset(height);
}];
🐷注意:
经过大佬们的指点:需要设置'preferredMaxLayoutWidth'
preferredMaxLayoutWidth它的作用就是:在对Label添加约束布局的时候,如果文本超出preferredMaxLayoutWidth指定的行宽,Label就会流到下一行,增加Label的高度.
//无bug写法
_shopDesLab.preferredMaxLayoutWidth = ([UIScreen mainScreen].bounds.size.width);
[_shopDesLab mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(self.shopNameLab.mas_bottom);
make.left.right.equalTo(self);
}];