В реализации UIView при каком условии вызывается drawRect: - PullRequest
3 голосов
/ 23 февраля 2012

Я понимаю, что вызов setNeedsDisplay вызовет drawRect:, но я хочу спросить, что может привести к представлению, вызывающему setNeedsDisplay (конечно, за исключением случаев, когда вы хотите вызвать его явно), например,

  • Изменение размера представления вызывает drawRect на себя? Как насчет его подпредставлений?

1 Ответ

4 голосов
/ 23 февраля 2012

Он вызывается всякий раз, когда необходимо перерисовать представление. Так будет, когда установлен внутренний флаг, который будет установлен setNeedsDisplay.

Конечно, выполнение других действий может привести к вызову setNeedsDisplay. Например, если вы используете режим содержимого UIViewContentModeRedraw, то в соответствии с документами:

UIViewContentModeRedraw

Повторно отображает представление при изменении границ, вызывая метод setNeedsDisplay.

Вы получите drawRect: после изменения границ при использовании этого режима содержимого.

Кроме того, я не могу думать о каких-либо других методах, у которых есть побочный эффект вызова setNeedsDisplay, но вполне может быть еще несколько.

...