iphone - расчет размера шрифта - PullRequest
0 голосов
/ 16 марта 2010

Я должен показать этикетку с размером шрифта = 14 когда вид 480x320.

Предположим, я хотел бы сделать это так, чтобы мой код работал хорошо для всех размеров экрана будущего устройства, включая iPad и другие, следующие (я уверен, что больше придет), каков наилучший способ сделать это?

Я мог бы сделать это пропорционально, я имею в виду, если масштаб увеличился на Х, увеличил шрифты на Х, но меня беспокоит другое соотношение сторон устройств.

Соотношение сторон iPhone составляет 1,5, но у iPad 1,33, и могут появиться другие соотношения сторон ... Я не уверен, что этого простого метода масштабирования будет достаточно для обеспечения согласованности шрифтов на всех устройствах.

Есть предложения?

спасибо за любую помощь.

Ответы [ 2 ]

2 голосов
/ 16 марта 2010

Простая установка uiLabel.adjustsFontSizeToFitWidth = YES приведет к уменьшению вашего текста до размера текстового поля. Просто убедитесь, что размер шрифта достаточно велик для iPad, потому что текст никогда не будет масштабирован вверх .

Конечно, вам также необходимо убедиться, что размер самой UILabel изменяется вместе с ее суперпредставлением, иначе ни UILabel, ни ее содержимое не будут масштабированы. Вы можете сделать это, используя вкладку «Размер» в Интерфейсном Разработчике, или программно используя свойство UILabel autoresizingMask.

1 голос
/ 16 марта 2010

Вы можете попробовать использовать этот код. Он автоматически уменьшит ваш текст до определенной ширины (здесь - contentRect). Просто укажите минимальный и максимальный допустимый размер шрифта для использования:

#define MAX_FONT_SIZE
#define MIN_FONT_SIZE
#define LEFT_TEXT_OFFSET
#define TEXT_TOP

UIFont *theFont = [UIFont systemFontOfSize: MAX_FONT_SIZE];
CGRect contentRect = self.bounds;
CGFloat boundsX = contentRect.origin.x;
CGPoint point;
CGSize width = contentRect.size.width;

point = CGPointMake(boundsX + LEFT_TEXT_OFFSET, TEXT_TOP);
[theText drawAtPoint:point forWidth:width withFont:theFont 
         minFontSize:MIN_FONT_SIZE actualFontSize:NULL
         lineBreakMode:UILineBreakModeTailTruncate
         baselineAdjustment:UIBaselineAdjustmentAlignBaselines];

Клаус

...