iOS动态计算一个label的高度

实际开发中我们经常会遇到根据文字多少计算label高度的问题,以下提供两个方法:

先建立一个label

    _atest = [[UILabel alloc]initWithFrame:CGRectZero];
    _atest.numberOfLines = 0;
    _atest.lineBreakMode = NSLineBreakByWordWrapping;

设置这个label的基础宽度(以200为例),高度设置为最大值

CGSize baseSize = CGSizeMake(200, CGFLOAT_MAX);

方法一:根据label中的内容计算高度(_testStr为字符串)

CGSize labelsize  = [_testStr
                    boundingRectWithSize:baseSize
                    options:NSStringDrawingUsesLineFragmentOrigin
                    attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:15.0]}
                    context:nil].size;
_atest.height = labelsize.height;

方法二:根据label的自适应获取高度

CGSize labelsize = [_atest sizeThatFits:baseSize];
_atest.height = labelsize.height;

动态宽度的获取与高度一样,只不过是把基础宽度设置为最大,高度固定就可以了

CGSize baseSize = CGSizeMake(CGFLOAT_MAX, 200);

你可能感兴趣的:(iOS动态计算一个label的高度)