Ответ
CoreGraphics (Quartz 2D) — это низкоуровневый C-API для рисования и работы с 2D-графикой. CoreAnimation — высокоуровневый фреймворк для анимаций и композиции слоев, использующий аппаратное ускорение (GPU).
CoreGraphics (Для кастомного рендеринга):
- Задачи: Отрисовка векторных фигур, работа с изображениями (масштабирование, обрезка), генерация графики в рантайме.
- Пример: Рисование красного квадрата в контексте изображения.
UIGraphicsBeginImageContext(CGSize(width: 100, height: 100)) defer { UIGraphicsEndImageContext() } guard let context = UIGraphicsGetCurrentContext() else { return nil } context.setFillColor(UIColor.red.cgColor) context.fill(CGRect(x: 0, y: 0, width: 100, height: 100)) let image = UIGraphicsGetImageFromCurrentImageContext()
CoreAnimation (Для анимаций и UI):
- Задачи: Анимация свойств слоёв (позиция, прозрачность, трансформация), создание плавных переходов.
- Пример: Анимация перемещения вью.
UIView.animate(withDuration: 0.3) { view.frame.origin.y += 100 }
Критерии выбора:
- Используйте CoreGraphics для статичной или сложной программной отрисовки.
- Используйте CoreAnimation для любых анимаций или простых визуальных изменений.
- Их можно комбинировать: нарисовать контент с помощью CoreGraphics в
draw(_:)илиUIGraphicsImageRenderer, а затем анимировать полученный слой/вью через CoreAnimation.