Фиксация рисования из сенсорных событий, а не из большого массива - PullRequest
1 голос
/ 24 марта 2012

Небольшая часть моего приложения содержит представление, где люди могут делать краткие заметки, рисуя на экране. В настоящее время я делаю это, сохраняя точки касания в массиве, затем соединяя точки в drawRect. Я знаю, что это не лучший способ сделать это, но это лишь небольшая часть моего приложения.

Проблема в том, что через некоторое время массив точек касания становится довольно большим и производительность снижается.

Может ли кто-нибудь предложить лучший способ сделать это, а не гигантскую игру «подключи точку»? Я думаю, что при каждом событии touchesEnded я должен каким-то образом фиксировать то, что было нарисовано во время этого касания, в отдельный чертеж, а затем очищать массив, но я не уверен, как это сделать?

1 Ответ

0 голосов
/ 24 марта 2012

Сохранить свойство CGMutablePath (или UIBezierPath) и добавить к нему.Построение больших путей очень дорого, поэтому вы не должны делать это внутри drawRect:.Если вам действительно приходится строить пути очень часто, обычно дешевле иметь несколько меньших путей, чем один массивный путь.

Вы также можете просто нарисовать каждый новый путь в постоянном CGLayer и нарисовать его в drawRect:.Это менее гибко, но имеет фиксированные требования к памяти и обработке.Вы можете добиться аналогичных результатов, обновив contents из CALayer.

...