UILabelのframeとtextから適切なfont sizeを取得する
textとfontからUILabelのframeを適切なsizeにするのはいくつもあったけど、タイトルの様な処理は見かけなかったのであんまり需要はなさそうだけど書いてみた。
今作ってるアプリケーションで任意のfont sizeを指定されたUILabelがUIVewにaddsubviewされる場面があるが、過剰なfont sizeでも画面に収めたい。
その際画面に対しての縮小率がわかっているUILabelのframeとそのtextをベースにして縮小されたflameにピッタリ収まるようなfontを取得したいという所で下記みたいな処理をするようにした
- (UIFont*)getFrameFitFont:(CGRect)frameSize text:(NSString *)text{ BOOL checkFitFont = YES; UIFont *font = [UIFont systemFontOfSize:1]; while (checkFitFont) { CGSize textSize = [text sizeWithFont:font]; if(textSize.width < frameSize.size.width){ font = [UIFont systemFontOfSize:font.pointSize + 1]; }else{ font = [UIFont systemFontOfSize:font.pointSize - 1]; checkFitFont = NO; } } return font; }
知らないだけでもっとスマートに取得できる方法があるような気もする