Рисование на iOS - PullRequest
       6

Рисование на iOS

2 голосов
/ 04 сентября 2010

Как я могу реализовать представление для рисования пользователей (в частности, подписать их имя)?Я бы предпочел библиотеку или пример кода для его реализации самостоятельно.

Спасибо

1 Ответ

2 голосов
/ 06 сентября 2010

Рисование изогнутой линии - это просто серия закрашенных кругов или маленьких прямых линий. Этакая дифференциация.

  1. Отслеживание предыдущих и текущих точек касания пользователя. (UITouch)
  2. Просто нарисуйте линию, соединяющую точки. (Или нарисуйте любую фигуру, какую хотите, просто заполните пробел)

Основы

Существует ряд методов для отслеживания касаний.

– 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

...