iOS UILabel 自动计算文字高度 - calculateUI 完善代码
在 calculateUI 中完善计算文字高度的代码,可以使用以下方法:
- 获取 UILabel 的字体和宽度:
UIFont *font = label.font;
CGFloat width = label.frame.size.width;
- 设置 UILabel 的行数为 0,以自动计算文字所需的高度:
label.numberOfLines = 0;
- 使用 NSString 的方法 'boundingRectWithSize:options:attributes:context:' 计算文字的高度:
CGSize textSize = [text boundingRectWithSize:CGSizeMake(width, CGFLOAT_MAX)
options:NSStringDrawingUsesLineFragmentOrigin
attributes:@{NSFontAttributeName: font}
context:nil].size;
CGFloat height = ceil(textSize.height);
这里的 'text' 是要计算高度的文字内容。
- 更新 UILabel 的高度:
CGRect frame = label.frame;
frame.size.height = height;
label.frame = frame;
完整代码示例:
UIFont *font = label.font;
CGFloat width = label.frame.size.width;
label.numberOfLines = 0;
CGSize textSize = [text boundingRectWithSize:CGSizeMake(width, CGFLOAT_MAX)
options:NSStringDrawingUsesLineFragmentOrigin
attributes:@{NSFontAttributeName: font}
context:nil].size;
CGFloat height = ceil(textSize.height);
CGRect frame = label.frame;
frame.size.height = height;
label.frame = frame;
原文地址: https://www.cveoy.top/t/topic/bRgq 著作权归作者所有。请勿转载和采集!