Запустив эту программу в симуляторе, я получил примерно такие результаты:
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
…
Итак, мы видим, что
__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 по оси
Рис. 17.6. Произвольная строка, нарисованная в графическом контексте вида
— (void)drawRect:(CGRect)rect{
UIFont *helveticaBold = [UIFont fontWithName:@"HelveticaNeue-Bold
size:40.0f];