实际开发中我们经常会遇到根据文字多少计算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);