[iOS]UILabelの幅にあわせてフォントのサイズを決める

決められたUILabelの幅に文字を表示する際、幅に収まるように最大で表示したい場合

    NSString *txt = @"表示する文字列";
    
    int font_size = 1;
    //システムフォント
    UIFont *temp_font = [UIFont systemFontOfSize:font_size];
    CGSize size = [txt sizeWithFont:temp_font];
    
    while(size.width<label.frame.size.width){
        font_size++;
        temp_font = [UIFont systemFontOfSize:font_size];
        size = [txt sizeWithFont:temp_font];
    }
    font_size--;
    NSLog(@"%d",font_size);

labelはUILabelのインスタンスでねフォントサイズを1から入れていってlabel.frame.size.widthを上回ったらループを抜け、デクリメントすれば最大フォントサイズが得られる仕組みです。システムフォントでなくても、ほかでも出来るとおもいます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください