Masonry 注意事项

  • 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);
}];

你可能感兴趣的:(Masonry 注意事项)