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

-2

私もこれに苦労していました。ここにいくつかのアイデアがあります:

  1. 高さを計算するには、 boldSystemFontOfSizeを使用します。これにより、最大のスペースが確保されるためです (ほとんどの場合、これは最悪です。一部のラベルは必要以上に高くなりますが、切り取られるよりはましです。)

  2. systemFontOfSizeboldSystemFontOfSizeの平均を計算します

+ (CGFloat) getHeightOfLabel:(NSString *)text ofFontSize:(CGFloat)fontSize withConstraint:(CGSize)constraint  
{  
    CGSize size1 = [text sizeWithFont:[UIFont systemFontOfSize:fontSize] ConstrainedToSize:constraint lineBreakMode:UILineBreakModeWordWrap];  
    CGSize size2 = [テキスト sizeWithFont:[UIFont boldSystemFontOfSize:fontSize] ConstrainedToSize:constraint lineBreakMode:UILineBreakModeWordWrap];  

    return (size1.height+size2.height)/2;  
}  

実際の高さを必要としない場合は、[label sizeToFit] を使用しますが、この高さが必要であると想定しています :)

于 2012-05-20T18:44:03.993 に答える