Читаем iOS. Приемы программирования полностью

Запустив эту программу в симуляторе, я получил примерно такие результаты:

Font Family = Thonburi

Font Family = Academy Engraved LE

Font Family = Snell Roundhand

Font Family = Avenir

Font Family = Marker Felt

Font Family = Geeza Pro

Font Family = Arial Rounded MT Bo Font Family = Trebuchet MS


Выстроив такой список семейств шрифтов, мы можем перечислить гарнитуры в каждом семействе. Будем пользоваться методом fontNamesForFamilyName: класса UIFont, а в ответ получим массив названий гарнитур из того семейства шрифтов, которое мы указали как параметр:


— (void) enumerateFonts{


for (NSString *familyName in [UIFont familyNames]){

NSLog(@"Font Family = %@", familyName);

for (NSString *fontName in

[UIFont fontNamesForFamilyName: familyName]){

NSLog(@"\t%@", fontName);


}

}


}

Запустив этот код в симуляторе iOS, получим:

Font Family = Thonburi Thonburi-Bold Thonburi

Font Family = Academy Eng AcademyEngravedLetPla

Font Family = Snell Round SnellRoundhand-Bold SnellRoundhand-Black SnellRoundhand


Итак, мы видим, что Thonburi — это семейство шрифтов, а Thonburi-Bold — одна из гарнитур этого семейства. Теперь, зная имя шрифта, мы можем загружать шрифты в объекты типа UIFont с помощью метода класса fontWithName: size:, относящегося к классу UIFont:


__unused UIFont *font = [UIFont fontWithName:@"Thonburi-Bold"

size:12.0f];

Если в результате работы метода класса fontWithName: size:, относящегося к классу UIFont, имеем nil, это означает, что найти шрифт с указанным именем не удалось. Убедитесь, что шрифт с заданным вами именем присутствует в системе. Для этого сначала перечислите все семейства шрифтов, а потом все названия гарнитур из каждого семейства.

Кроме того, можно воспользоваться методом экземпляра systemFontOfSize:, относящимся к классу UIFont (или его «жирным» аналогом, boldSystemFontOfSize:), для загрузки локальных системных шрифтов — где бы они ни находились — прямо на устройстве, где работает ваш код. Стандартный системный шрифт в iOS — Helvetica.

Загрузив шрифты, можете переходить к разделу 17.2. Там мы воспользуемся загруженными шрифтами для отрисовки текста в графическом контексте.

См. также

Раздел 17.2.

17.2. Отрисовка текста

Постановка задачи

Требуется рисовать текст на экране устройства с iOS.

Решение

Воспользуйтесь методом drawAtPoint: withFont: класса NSString.

Обсуждение

Для отрисовки текста можно воспользоваться очень удобными методами, входящими в состав класса NSString. Один из таких методов — drawAtPoint: withFont:. Но прежде чем продолжить работу, еще раз удостоверьтесь в том, что выполнили все инструкции из введения к этой главе. Теперь у вас должен быть объект-вид, являющийся подклассом от UIView. Он должен называться GraphicsViewControllerView. Откройте этот файл. Если закомментирован метод экземпляра drawRect:, относящийся к объекту-виду, то раскомментируйте его, чтобы включить этот метод в объект:


#import «View.h»


@implementation View


— (id)initWithFrame:(CGRect)frame{

self = [super initWithFrame: frame];

if (self) {

// Код инициализации

}

return self;

}


— (void)drawRect:(CGRect)rect{


}


@end


Именно в методе drawRect: будет происходить все рисование, как мы указывали ранее. Здесь мы можем приступать к загрузке шрифта, а потом нарисовать на экране простую текстовую строку, которая будет начинаться на уровне 40 по оси X и на уровне 180 по оси Y (рис. 17.6):


Рис. 17.6. Произвольная строка, нарисованная в графическом контексте вида


— (void)drawRect:(CGRect)rect{


UIFont *helveticaBold = [UIFont fontWithName:@"HelveticaNeue-Bold

size:40.0f];


Перейти на страницу:
Нет соединения с сервером, попробуйте зайти чуть позже