Что такое UIBezierPath в iOS?

«Что такое UIBezierPath в iOS?» — вопрос из категории UIKit, который задают на 10% собеседований IOS Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

UIBezierPath — это класс в UIKit, который предоставляет высокоуровневый интерфейс для определения векторных путей, состоящих из прямых и кривых линий (кривых Безье). Он является оберткой над Core Graphics (CGPath) и упрощает создание сложных фигур для отрисовки или использования в качестве маски.

Основные компоненты пути:

  • Опорные точки (Anchor Points): Определяют начало и конец сегмента.
  • Контрольные точки (Control Points): Управляют кривизной и формой кривых Безье.

Пример создания квадратичной кривой Безье:

let path = UIBezierPath()
path.move(to: CGPoint(x: 50, y: 50))
path.addQuadCurve(to: CGPoint(x: 150, y: 50),
                  controlPoint: CGPoint(x: 100, y: 150))
// Отрисовка пути
UIColor.blue.setStroke()
path.stroke()

Основные сферы применения:

  1. Кастомное рисование: В методе draw(_ rect: CGRect) у UIView.
  2. Анимация движения: Анимация объекта вдоль заданного пути с помощью CAKeyframeAnimation.
  3. Маски и формы: Создание CAShapeLayer для обрезки слоев или нестандартных границ.

Преимущества:

  • Простота: Интуитивный API по сравнению с прямым использованием Core Graphics.
  • Производительность: Оптимизирован для аппаратного ускорения.
  • Гибкость: Поддержка линий, дуг, кривых Безье 2-го и 3-го порядка, а также комбинирования путей.