sizeWithFont: minFontSize: actualFontSize: forWidth: lineBreakMode: не возвращается правильный CGSize - PullRequest
3 голосов
/ 23 октября 2011

Если я не читаю документы неправильно, похоже, что этот метод sizeWithFont:minFontSize:actualFontSize:forWidth:lineBreakMode: не возвращает правильный размер CGSize.Вот пример кода

NSString *someText = @"$";
CGFloat actualFontSize;
CGSize textSize = [someText sizeWithFont:[UIFont fontWithName:@"Futura-CondensedMedium" size:100.0] minFontSize:1.0 actualFontSize:&actualFontSize forWidth:10.0 lineBreakMode:UILineBreakModeClip];

Возвращенная высота textSize - это то, что было бы, если бы размер шрифта был 100.0 , а не тот, который был бы при новом уменьшенном размере шрифта..

Если вы возьмете actualFontSize и сделаете sizeWithFont:forWidth:lineBreakMode::

CGSize newTextSize = [someText sizeWithFont:[UIFont fontWithName:@"Futura-CondensedMedium" size:actualFontSize] forWidth:10.0 lineBreakMode:UILineBreakModeClip];

Теперь newTextSize будет содержать правильную высоту.

Кто-нибудь еще сталкивался с этим?

1 Ответ

1 голос
/ 23 октября 2011

Проблема в вашей ширине. Поскольку вы установили минимальный шрифт на 1,0 пикселя и ширину только на 10,0, ваш textSize автоматически настроится на меньший размер текста, соответствующий ширине 10,0, которую вы установили самостоятельно.

CGSize textSize = [someText 
sizeWithFont:[UIFont fontWithName:@"Futura-CondensedMedium" size:100.0] 
minFontSize:1.0   //the troublemaker
actualFontSize:&actualFontSize 
forWidth:10.0     //the troublemaker 
lineBreakMode:UILineBreakModeClip];

Другой, который вы разместили, вернет правильный размер, потому что вы не установили минимальный текстовый шрифт и правильно установили ширину.

CGSize newTextSize = [someText 
sizeWithFont:[UIFont fontWithName:@"Futura-CondensedMedium" 
size:actualFontSize] 
forWidth:currencyRect.size.width //probably not 10 pixels wide
lineBreakMode:UILineBreakModeClip];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...