Как запретить drawRect UIView очистить пути, нарисованные предыдущими вызовами drawRect? - PullRequest
5 голосов
/ 28 февраля 2009

Каждый раз, когда вызывается drawRect из UIView, содержимое, нарисованное предыдущим drawRect (с использованием Core Graphics), очищается. Как я могу сделать так, чтобы пути, отображаемые при предыдущих вызовах drawRect, оставались до тех пор, пока я не очистил их явно?

Ответы [ 3 ]

3 голосов
/ 28 февраля 2009

В основном вам нужно обрезать «грязную» часть вашего прямоугольника, где были сделаны изменения, и только эта часть будет перерисована.

- (void)setNeedsDisplayInRect:(CGRect)invalidRect
1 голос
/ 02 марта 2009

Я сам сейчас борюсь с этим вопросом. Проблема в том, что в UIView есть свойство, называемое «clearsContextBeforeDrawing», которое, согласно документации, должно решить эту проблему, однако, по моему опыту, оно не работает таким образом.

Я думаю, что в конечном итоге решение этой проблемы будет состоять в том, чтобы выделить внеэкранный буфер и выполнить весь мой рисунок там, а затем перенести его в UIView в методе drawRect.

0 голосов
/ 01 марта 2009

Я почти уверен, что нет никакого способа обойти это; это то, как UIView предназначен для работы. Если вас попросят, ваш пользовательский вид должен иметь возможность рисовать любую часть себя в любое время. Это отчасти потому, что представления могут делать больше, чем просто появляться на экране. например на рабочем столе они могут быть напечатаны, и даже на iPhone вы можете записать содержимое представления в растровое изображение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...