使用boundingRectWithSize:options:attributes:context计算标签高度的ios代码返回一个比应该值多40像素的值

使用boundingRectWithSize:options:attributes:context计算标签高度的ios代码返回一个比应该值多40像素的值,ios,objective-c,Ios,Objective C,我有下面的代码,它根据我设置标签的文本来计算标签的高度。但我发现它总是比我反复尝试找到的值多40像素。有人有同样的问题吗?如果是,可能的解决方案是什么 NSDictionary *stringAttributes = [NSDictionary dictionaryWithObject:myLabel.font forKey:NSFontAttributeName]

我有下面的代码,它根据我设置标签的文本来计算标签的高度。但我发现它总是比我反复尝试找到的值多40像素。有人有同样的问题吗?如果是,可能的解决方案是什么

    NSDictionary *stringAttributes = [NSDictionary dictionaryWithObject:myLabel.font
                                                              forKey:NSFontAttributeName];
     // width is the width of the label
    CGSize size = CGSizeMake(width, NSUIntegerMax);
    CGSize expectedLabelSize =
    [text boundingRectWithSize:size
                        options:NSStringDrawingUsesLineFragmentOrigin
                     attributes:stringAttributes
                        context:nil].size;

// expectedLabelSize.height is 40 pixel than it should.
// If I manually - 40 from the value expected

谢谢。

你试过用其他方法计算高度吗

首先设置标签的preferredMaxLayoutWidth属性

然后简单地调用标签的intrinsicContentSize以获取其内在大小,然后获取高度


它对我来说更简单,所以我一直在使用它。

它比任何字符串的预期值都高40吗?你期望什么?为什么?您正在测试的字体、宽度和文本是多少?