我编写了以下方法来计算给定宽度的 NSAttributedString 的高度:
- (CGFloat)findHeightForText:(NSString *)text havingWidth:(CGFloat)widthValue {
CGFloat height = 0.0;
if (text) {
CGRect frame = [text boundingRectWithSize:CGSizeMake(widthValue, CGFLOAT_MAX) options:NSStringDrawingUsesLineFragmentOrigin| NSStringDrawingUsesFontLeading attributes:@{ NSFontAttributeName : [UIFont systemFontOfSize:14 weight:UIFontWeightRegular] } context:nil];
height = ceil(frame.size.height);
}
return height;
}
除了颜色外,标签的属性字符串只有一个字体属性:
NSFontAttributeName : [UIFont systemFontOfSize:14 weight:UIFontWeightRegular]
问题是偶尔会返回不正确的值。例如。我看到文本以三行排列,但是我获得的高度值是两行。类似地,有时它返回两行的高度值,而文本可以使用一行进行布局。
我没有传递段落样式,因为 NSLineBreakByWordWrapping 是默认值。
我已经阅读了类似的主题,但没有一个给我解决方案。我错过了什么?