Обсуждение

Обсуждение

Шрифты имеют фундаментальное значение для отображения текста в графическом пользовательском интерфейсе. Во фреймворке UIKit программисту предоставляются высокоуровневые API, обеспечивающие перечисление, загрузку и использование шрифтов. В Cocoa Touch шрифты заключены в классе UIFont. В каждом устройстве с iOS есть встроенные системные шрифты. Шрифты распределены по семействам (Family), а в каждом семействе есть гарнитуры (Faces). Например, Helvetica — это семейство шрифтов, а Helvetica Bold — одна из гарнитур этого семейства. Чтобы шрифт можно было загрузить, необходимо знать гарнитуру шрифта (фактически его название), а чтобы узнать гарнитуру, нужно знать семейство. Итак, для начала перечислим все семейства шрифтов, которые уже установлены на устройстве, воспользовавшись методом familyNames класса UIFont:

— (void) enumerateFonts{

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

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

}

}

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

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(@" %@", 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. Там мы воспользуемся загруженными шрифтами для отрисовки текста в графическом контексте.

Данный текст является ознакомительным фрагментом.