В этом примере я удалил из приложения в симуляторе iOS статусную панель. Если вы не хотите с этим возиться, то можете сразу переходить к коду, приведенному далее. При наличии статусной панели результат выполнения кода будет лишь незначительно отличаться от того, что показано на моем скриншоте. Чтобы скрыть статусную панель, найдите в вашем проекте Xcode файл Info.plist и добавьте в этот файл ключ UIStatusBarHidden со значением YES (рис. 17.20). В таком случае сразу после открытия приложения статусная панель будет скрыта.
Рис. 17.20. Операция с файлом Info.plist, позволяющая скрыть статусную панель приложения iOS
— (void)drawRect:(CGRect)rect{
/* Создаем путь. */
CGMutablePathRef path = CGPathCreateMutable();
/* Каковы размеры экрана? Мы хотим, чтобы X растянулся на весь экран. */
CGRect screenBounds = [[UIScreen mainScreen] bounds];
/* Начинаем с верхнего левого угла. */
CGPathMoveToPoint(path,
NULL,
screenBounds.origin.x,
screenBounds.origin.y);
/* Проводим линию из верхнего левого в нижний правый угол экрана. */
CGPathAddLineToPoint(path,
NULL,
screenBounds.size.width,
screenBounds.size.height);
/* Начинаем другую линию из верхнего правого угла. */
CGPathMoveToPoint(path,
NULL,
screenBounds.size.width,
screenBounds.origin.y);
/* Проводим линию из верхнего правого в нижний левый угол. */
CGPathAddLineToPoint(path,
NULL,
screenBounds.origin.x,
screenBounds.size.height);
/* Получаем контекст, в котором должен быть отрисован путь. */
CGContextRef currentContext = UIGraphicsGetCurrentContext();
/* Добавляем путь к контексту, чтобы позже его можно было отрисовать. */
CGContextAddPath(currentContext,
path);
/* Задаем для штриха голубой цвет. */
[[UIColor blueColor] setStroke];
/* Отрисовываем путь этим цветом. */
CGContextDrawPath(currentContext,
kCGPathStroke);
/* Наконец, высвобождаем объект пути. */
CGPathRelease(path);
}
Параметр NULL, передаваемый таким процедурам, как CGPathMoveToPoint, представляет возможные преобразования, которые могут быть применены при отрисовке фигур и линий по заданному пути. Подробнее о преобразованиях рассказано в разделах 17.11–17.13.
Итак, нарисовать путь в графическом контексте очень просто. На самом деле следует всего лишь запомнить, как создать новый изменяемый путь (CGPathCreateMutable), добавить этот путь к вашему графическому контексту (CGContextAddPath) и отрисовать путь в графическом контексте (CGContextDrawPath). Запустив этот код, вы получите примерно такой результат, как на рис. 17.21.
Рис. 17.21. Рисование в графическом контексте с использованием путей
См. также
Разделы 17.6, 17.11–17.13.
17.8. Отрисовка прямоугольников
Постановка задачи
Требуется отрисовывать прямоугольники в графическом контексте.
Решение
Воспользуйтесь CGPathAddRect для добавления прямоугольника к пути, а потом отрисовывайте этот путь в графическом контексте.
Обсуждение