3

我目前正在使用以下方法来获取标签所需的高度

+ (CGFloat) getHeightOfLabel:(NSString *)text ofFontSize:(CGFloat)fontSize withConstraint:(CGSize)constraint
{
    CGSize size = [text sizeWithFont:[UIFont systemFontOfSize:fontSize] constrainedToSize:constraint lineBreakMode:UILineBreakModeWordWrap];

    return size.height;
}

这在大多数情况下都有效,但是,有些字符串由粗体和非粗体文本混合而成,这可能会影响极端情况下所需的确切高度。

例如

在此处输入图像描述

有什么方法可以得到含有这种混合物的标签的准确高度吗?

4

2 回答 2

1

就是这样

UILabel *labelWithAtributedText = ...
CGSize size = [labelWithAtributedText sizeThatFits:CGSizeMake(maxWidth, CGFLOAT_MAX)];
于 2013-08-29T16:40:05.917 回答
-2

我也在为此苦苦挣扎。这里有几个想法:

  1. 使用boldSystemFontOfSize来计算高度,因为它将允许最大空间(在大多数情况下,这是最差的。有些标签会比需要的高一点,但我发现它比被切断要好。)

  2. 计算systemFontOfSizeboldSystemFontOfSize之间的平均值

+ (CGFloat) getHeightOfLabel:(NSString *)text ofFontSize:(CGFloat)fontSize withConstraint:(CGSize)constraint  
{  
    CGSize size1 = [文本 sizeWithFont:[UIFont systemFontOfSize:fontSize] constrainedToSize:constraint lineBreakMode:UILineBreakModeWordWrap];  
    CGSize size2 = [文本 sizeWithFont:[UIFont boldSystemFontOfSize:fontSize] constrainedToSize:constraint lineBreakMode:UILineBreakModeWordWrap];  

    返回 (size1.height+size2.height)/2;  
}  

如果您不需要实际高度,请使用 [label sizeToFit] 但我假设您需要这个高度 :)

于 2012-05-20T18:44:03.993 回答