Расчет размера UIFont на основе предварительно рассчитанного по возрастанию - PullRequest
0 голосов
/ 19 июня 2011

Я использую собственный шрифт для своего приложения iOS. Мое представление должно выбрать другой размер точки для шрифта в зависимости от размера представления. Если у меня есть предопределенный

CGFloat ascender;

и я по сути хочу определить это

CGFloat calculatedFontSize = [self fontSizeForAscender:ascender];
[UIFont fontWithName:@"DINEngschriftStd" size:calculatedFontSize];

Каков наилучший способ сделать это?

Ответы [ 2 ]

2 голосов
/ 20 июня 2011

попробуйте это. [aString sizeWithFont:font minFontSize:minSize actualFontSize:&theSizeToUse forWidth:ViewWidth lineBreakMode:UILineBreakModeWordWrap];

theSizeToUse - это просто неинициализированный CGFloat (т. Е. CGFloat theSizeToUse;). Вы должны передать его адрес методу, и по возвращении он будет содержать размер шрифта, который вы должны использовать.

1 голос
/ 20 июня 2011

Нет особо очевидного способа сделать это. Вы можете итеративно изменять размер шрифта до тех пор, пока не найдете правильный шрифт, но он немного запутанный (к счастью, поплавков не так много, поэтому вы можете сделать это достаточно точно в 31 испытании с разбивкой по интервалам).

С другой стороны, если вы предполагаете, что масштабирование линейно масштабируется с размером шрифта, вы можете просто сделать это:

UIFont * f = [UIFont fontWithName:... size:1];
f = [f fontWithSize:ascender/f.ascender];
...