Чтение онлайн

на главную - закладки

Жанры

iOS. Приемы программирования

Нахавандипур Вандад

Шрифт:

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

size:40.0f];

NSString *myString = @"Some String";

[myString drawAtPoint: CGPointMake(40, 180)

withFont: helveticaBold];

}

В этом коде мы просто загружаем жирный шрифт Helvetica (кегль 40) и рисуем с его помощью

текст Some String, который начинается в точке (40; 180).

17.3. Создание, установка и использование цветов

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

Требуется иметь возможность получать ссылки на цветовые объекты с последующим использованием этих объектов при рисовании различных форм в виде. К числу форм можно отнести текст, прямоугольники, треугольники и сегменты линий.

Решение

Воспользуйтесь классом UIColor.

Обсуждение

Во фреймворке UIKit программисту предоставляются высокоуровневые абстракции цветов, инкапсулированные в объекте UIColor. В этом классе имеются очень удобные методы класса, в частности redColor, blueColor, brownColor и yellowColor. Тем не менее, если вас интересует иной цвет, кроме тех, чьи параметры явно задаются как параметры этого метода класса UIColor, можно воспользоваться методом класса colorWithRed: green: blue: alpha:, относящимся к классу UIColor, и загрузить искомое цветовое значение. Возвращаемое значение этого метода относится к типу UIColor. Данный метод имеет следующие параметры:

• red — доля красного в конкретном оттенке. Это значение может находиться в диапазоне от 0.0f до 1.0f, где 0.0f полностью исключает красный компонент, а 1.0f дает максимально насыщенный темно-красный цвет;

• green — доля зеленого, смешиваемая с красным в цвете. Это значение также может находиться в диапазоне от 0.0f до 1.0f;

• blue — доля голубого, смешиваемая с красным и зеленым в цвете. Это значение также может находиться в диапазоне от 0.0f до 1.0f;

• alpha — матовость (непрозрачность) цвета. Это значение может находиться в диапазоне от 0.0f до 1.0f, где 1.0f делает цвет полностью матовым, а 0.0f — полностью прозрачным (иными словами, невидимым).

Имея объект типа UIColor, вы можете воспользоваться его методом экземпляра set, чтобы в текущем графическом контексте этот цвет использовался для рисования.

Можно применять метод класса colorWithRed: green: blue: alpha:, относящийся к классу UIColor, для загрузки основных цветов, например красного. Для этого параметру red просто сообщается значение 1.0f, а параметрам green и blue — значение 0.0f. Значение параметра alpha выбираете сами.

Взглянув на рис. 17.1, мы видим, что заданный по умолчанию цвет фона для созданного нами объекта-вида — серый, довольно некрасивый. Исправим это. Просто найдем метод экземпляра viewDidLoad контроллера вида GraphicsViewController и изменим фоновый цвет вида на белый, как показано здесь:

— (void)viewDidLoad{

[super viewDidLoad];

self.view.backgroundColor = [UIColor whiteColor];

}

Для отрисовки текста в текущем графическом контексте будем пользоваться методами

экземпляра класса NSString, подробнее об этом — чуть позже.

Теперь загрузим в объект типа UIColor пурпурный цвет, а потом нарисуем в графическом контексте вида текст I Learn Really Fast, использовав для этого жирный шрифт Helvetica кегля 30 (о загрузке шрифтов рассказано в разделе 17.1):

— (void)drawRect:(CGRect)rect{

/* Загружаем цвет. */

UIColor *magentaColor =[UIColor colorWithRed:0.5f

green:0.0f

blue:0.5f

alpha:1.0f];

/* Задаем цвет в графическом контексте. */

[magentaColor set];

/* Загружаем шрифт. */

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

size:30.0f];

/* Строка, которую требуется отрисовать. */

NSString *myString = @"I Learn Really Fast";

/* Рисуем строку выбранным шрифтом.

Цвет мы уже установили. */

[myString drawAtPoint: CGPointMake(25, 190)

withAttributes:@{

NSFontAttributeName: helveticaBold

}];}

Результат показан на рис. 17.7.

Рис. 17.7. Строка, отрисованная выбранным цветом в графическом контексте

Кроме того, мы можем воспользоваться методом экземпляра drawInRect: withFont:, относящимся к классу NSString, чтобы нарисовать текст внутри прямоугольной области. Текст будет растянут, чтобы он полностью занял отведенное пространство. Фреймворк UIKit даже позволяет переносить часть текста на следующую строку, если он не будет умещаться в отведенном прямоугольнике по горизонтали. Границы прямоугольной области инкапсулированы в структурах CGRect. Для создания границ прямоугольника можно использовать функцию CGRectMake:

— (void)drawRect:(CGRect)rect{

/* Загружаем цвет. */

UIColor *magentaColor = [UIColor colorWithRed:0.5f

green:0.0f

blue:0.5f

alpha:1.0f];

/* Задаем цвет в графическом контексте. */

[magentaColor set];

/* Загружаем шрифт. */

UIFont *helveticaBold = [UIFont boldSystemFontOfSize:30];

Поделиться:
Популярные книги

La Storia. История. Скандал, который длится уже десять тысяч лет

Моранте Эльза
Проза:
классическая проза
современная проза
6.25
рейтинг книги
La Storia. История. Скандал, который длится уже десять тысяч лет

Взрыв

Желязны Роджер Джозеф
Фантастика:
фантастика: прочее
5.00
рейтинг книги
Взрыв

Проданная Истинная. Месть по-драконьи

Белова Екатерина
Любовные романы:
любовно-фантастические романы
5.25
рейтинг книги
Проданная Истинная. Месть по-драконьи

Том 9. По экватору. Таинственный незнакомец

Твен Марк
Проза:
классическая проза
6.25
рейтинг книги
Том 9. По экватору. Таинственный незнакомец

Трилогия «Хроники Сиалы»

Пехов Алексей Юрьевич
3. В одном томе
Фантастика:
фэнтези
9.47
рейтинг книги
Трилогия «Хроники Сиалы»

Дороги на Ларедо

Макмуртри Лэрри Джефф
2. Лоунсам Дав
Приключения:
вестерны
7.50
рейтинг книги
Дороги на Ларедо

Ловите конский топот. Том 1. Исхода нет, есть только выходы...

Звягинцев Василий Дмитриевич
15. Одиссей покидает Итаку
Фантастика:
альтернативная история
8.24
рейтинг книги
Ловите конский топот. Том 1. Исхода нет, есть только выходы...

Дневники

Толстой Лев Николаевич
Проза:
русская классическая проза
6.83
рейтинг книги
Дневники

Конан из Киммерии

Говард Роберт Ирвин
Шедевры фантастики
Фантастика:
фэнтези
боевая фантастика
6.25
рейтинг книги
Конан из Киммерии

Я снова не бог. Книга XXXVIII

Дрейк Сириус
38. Дорогой барон!
Фантастика:
аниме
попаданцы
5.00
рейтинг книги
Я снова не бог. Книга XXXVIII

Культура имеет значение

Хантингтон Самюэль
Научно-образовательная:
культурология
5.50
рейтинг книги
Культура имеет значение

Тристан и Женевьева (Среди роз)

Дрейк Шеннон
Любовные романы:
исторические любовные романы
7.67
рейтинг книги
Тристан и Женевьева (Среди роз)

Муха в самолете

Донцова Дарья
13. Виола Тараканова. В мире преступных страстей
Детективы:
иронические детективы
7.83
рейтинг книги
Муха в самолете

Газлайтер. Том 22

Володин Григорий Григорьевич
22. История Телепата
Фантастика:
боевая фантастика
попаданцы
фэнтези
5.25
рейтинг книги
Газлайтер. Том 22