У меня есть это приложение, с помощью которого можно рисовать основные фигуры, такие как прямоугольник, затмение, круг, текст и т. Д. Я также разрешаю рисовать произвольную форму, которая хранится в виде набора точек на холсте.
Кроме того, пользователь может изменять размеры и перемещаться вокруг этих объектов, работая с ручками выбора, которые появляются, когда объект выбран.Кроме того, пользователь должен иметь возможность масштабировать и панорамировать холст.
Мне нужны некоторые сведения о том, как эффективно реализовать эту функцию рисования.Я имею в виду следующие вещи -
- Использование UIView's InvalidateRect и drawRect
Иметь UIView для основного холста и для каждого вставленного объекта - сделать недействительным соответствующий прямоугольник и перерисовать всеобъекты, которые пересекают этот прямоугольник в функции drawRect UIView.
Есть UIView и использовать CALayer?каждый продолжает упоминать о CALayer, я не имею большого представления об этом, прежде чем я решусь на это, я хотел бы быстро узнать, стоит ли этот маршрут.например, https://developer.apple.com/library/ios/#qa/qa1708/_index.html
Иметь UIImageView в качестве холста, и при рисовании каждого объекта мы делаем это: i) Рисуем объект в CGContext за пределами экрана, в основном, создаем новый CGContext с помощью UIGraphicsBeginImageContext, рисуем формуИзвлеките изображение из этого контекста CG и используйте его в качестве источника свойства изображения UIImageView, но здесь, как сделать недействительной только часть UIImageView, чтобы обновлять только эту область.
Не могли бы вы предложить лучший подход?Есть ли другой эффективный способ сделать это?
Спасибо.