Вы должны вызывать setNeedsDisplay только в том случае, если вы переопределяете drawRect в подклассе UIView, который в основном представляет собой настраиваемое представление, рисующее что-то на экране, например линии, изображения или формы, такие как прямоугольник.
Таким образом, вы должны вызвать setNeedsDisplay, когда вы вносите изменения в несколько переменных, от которых зависит этот рисунок, и для представления этого изменения вам необходимо вызвать этот метод, который внутренне вызовет drawRect и перерисует компоненты.
Когда вы добавляете imageView или UIButton в качестве подпредставления или вносите изменения в любое подпредставление, вам не нужно вызывать этот метод.
Пример:
У вас есть представление, которое показывает движущийся круг, вы либо касаетесь его и перемещаете, либо это может быть анимация на основе таймера. Теперь для этого вам понадобится настраиваемый вид, который рисует круг в заданном центре и с заданным радиусом. Они сохраняются как переменные экземпляра, которые изменяются для перемещения круга путем изменения его центра или увеличения его за счет увеличения радиуса.
Теперь в этом случае вы либо измените эти переменные (центр или радиус) в цикле и таймере, либо вы можете вручную в методах touchesEnded и touchesMoved. Чтобы отразить изменение этого свойства, вам необходимо перерисовать это представление, для которого вы вызовете setNeedsDisplay.
person
Amogh Talpallikar
schedule
30.05.2012