決められたUILabelの幅に文字を表示する際、幅に収まるように最大で表示したい場合
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
[java] 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); [/java] |
labelはUILabelのインスタンスでねフォントサイズを1から入れていってlabel.frame.size.widthを上回ったらループを抜け、デクリメントすれば最大フォントサイズが得られる仕組みです。システムフォントでなくても、ほかでも出来るとおもいます。