2

numberOfLines>1 で UILabel のテキスト サイズを自動リサイズしたい。UILabel の幅と高さを修正する必要があります。文字を数えてサイズを手動で設定する代わりに、より良い解決策はありますか? iOS6を使用しています。

4

2 に答える 2

4

見つけた解決策を修正しました。これは、UITableViewCell で使用できるようになりました。

- (void)resizeFontForLabel:(UILabel*)aLabel maxSize:(int)maxSize minSize:(int)minSize lblWidth: (float)lblWidth lblHeight: (float)lblHeight {
    // use font from provided label so we don't lose color, style, etc
    UIFont *font = aLabel.font;

    // start with maxSize and keep reducing until it doesn't clip
    for(int i = maxSize; i >= minSize; i--) {
        font = [font fontWithSize:i];
        CGSize constraintSize = CGSizeMake(lblWidth, MAXFLOAT);

//        NSString* string = [aLabel.text stringByAppendingString:@"..."];
        CGSize labelSize = [aLabel.text sizeWithFont:font constrainedToSize:constraintSize lineBreakMode:aLabel.lineBreakMode];

        if(labelSize.height <= lblHeight)
            break;
    }

    // Set the UILabel's font to the newly adjusted font.
    aLabel.font = font;

}
于 2013-01-25T16:22:06.833 に答える
0

次のコード行は、文字列のフルサイズを示します。

CGSize labelSize = [labelString sizeWithFont:label.font constrainedToSize:label.contentSize];
于 2013-01-19T05:02:59.090 に答える