boundingRectWithSize返回错误的高度

时间:2016-09-30 16:09:31

标签: ios objective-c

我编写了以下方法来计算给定宽度的 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 是默认值。

我已经阅读了类似的主题,但没有一个给我解决方案。我错过了什么?

0 个答案:

没有答案