iOS. Приемы программирования
Шрифт:
5. Поскольку у нас в этом массиве всего два цвета, следует указать, что первый цвет расположен в самом начале градиента (точка с координатами (0; 0))
6. Теперь нам остается просто вызвать функцию CGGradientCreateWithColorComponents со всеми сгенерированными значениями:
7. Прекрасно! Теперь в переменной gradient находится объект градиента. Пока не забыли, нужно высвободить цветовое пространство, созданное с помощью функции CGColorSpaceCreateDeviceRGB:
Теперь воспользуемся процедурой CGContextDrawLinearGradient для отрисовки осевого градиента в графическом контексте. Эта процедура принимает пять параметров.
• Графический контекст — указывает графический контекст, в котором будет отрисовываться осевой градиент.
Осевой градиент — описатель объекта осевого градиента. Этот объект градиента создан с помощью функции CGGradientCreateWithColorComponents.
Начальная точка — точка в графическом контексте, указанная в параметре CGPoint, в которой начинается градиент.
Конечная точка — точка в графическом контексте, указанная в параметре CGPoint, в которой заканчивается градиент.
Параметры отрисовки градиента — указывают, что должно произойти, если начальная и конечная точки не совпадают с краями графического контекста. Для заполнения пространства, лежащего вне градиента, можно использовать начальный или конечный цвета. Этот параметр может принимать одно из следующих значений:
• kCGGradientDrawsAfterEndLocation — распространяет градиент на все точки после конечной точки градиента;
• kCGGradientDrawsBeforeStartLocation — распространяет градиент на все точки до начальной точки градиента;
• 0 — градиент не распространяется.
Чтобы распространить градиент в обе стороны, укажите оба параметра — «до» и «после», — воспользовавшись логическим оператором ИЛИ (обозначается символом |). Пример будет рассмотрен далее:
Описатель
Очевидно, что результат выполнения этого кода будет напоминать рис. 17.27. Поскольку мы начали градиент с самой левой точки экрана и распространили его до самой правой, то не можем воспользоваться теми значениями, которые способен получить последний параметр процедуры CGContextDrawLinearGradient, параметр отрисовки градиента. Исправим этот недостаток. Попробуем нарисовать такой градиент, как на рис. 17.28.
Рис. 17.28. Осевой градиент с оттенками, распространяющимися за его начальную и конечную точки
При написании кода воспользуемся той же процедурой, о которой говорили ранее:
Имперец. Том 1 и Том 2
1. Имперец
Фантастика:
попаданцы
альтернативная история
аниме
рейтинг книги
Я все еще не царь. Книга XXVI
26. Дорогой барон!
Фантастика:
попаданцы
аниме
рейтинг книги
Ничто никогда не случалось. Жизнь и учение Пападжи (Пунджи). Книга 1
Религия и эзотерика:
эзотерика
рейтинг книги
Я князь. Книга XVIII
18. Дорогой барон!
Фантастика:
юмористическое фэнтези
попаданцы
аниме
рейтинг книги
Вольный Лекарь. Ученик. Трилогия
Вольный лекарь
Фантастика:
фэнтези
попаданцы
рейтинг книги
Прабхупада: Человек. Святой. Его жизнь. Его наследие
Религия и эзотерика:
самосовершенствование
эзотерика
религия
христианство
индуизм
рейтинг книги
Неизвестная война. Тайная история США
Научно-образовательная:
история
рейтинг книги
Испекли мы каравай (сборник)
Любовные романы:
современные любовные романы
рейтинг книги
Зазеркальная империя. Гексалогия
Зазеркальная империя
Фантастика:
боевая фантастика
попаданцы
рейтинг книги