Рисование изогнутой линии - это просто серия закрашенных кругов или маленьких прямых линий. Этакая дифференциация.
- Отслеживание предыдущих и текущих точек касания пользователя. (
UITouch
)
- Просто нарисуйте линию, соединяющую точки. (Или нарисуйте любую фигуру, какую хотите, просто заполните пробел)
Основы
Существует ряд методов для отслеживания касаний.
– touchesMoved:withEvent:
– touchesEnded:withEvent:
– touchesCancelled:withEvent:
Эти методы на UIView
. (Сами методы определены в UIResponder
, который является его суперклассом)
Переопределите их. В большинстве случаев отслеживание точки касания не является проблемой.
И отправьте setNeedsDisplay
сообщение самому UIView, чтобы сделать его недействительным его графическое состояние, поэтому оно скоро будет перерисовано.
Переопределить drawRect
метод UIView
, чтобы нарисовать что-то (например, черный диск), вам нужно с помощью Кварц (CGContext
). Вы можете хранить отслеживаемые точки касания для рисования каждой линии. По сути, вам нужно перерисовать все сенсорные трассы.
Оптимизация
- Вы можете кэшировать нарисованное изображение как растровое изображение (
CGImage
, которое можно получить UIImage
). Поэтому вам нужно нарисовать только что добавленные точки касания.
- Вы можете рисовать на растровом изображении напрямую, установив контекст рисования на растровое изображение. И просто отобразить его через UIImage.
- Вы можете использовать текстуру OpenGL ES. Это самый быстрый, но самый сложный. И требует совершенно другого подхода для увеличения производительности.
Более подробная информация и примеры приведены по методам / классам, которые я упоминал. Я прилагаю ссылку:
http://developer.apple.com/iphone/library/navigation/index.html#section=Topics&topic=Graphics%20%26amp%3B%20Animation