drawRect и addSubview: пользовательский рисунок влияет на какие виды? - PullRequest
8 голосов
/ 29 августа 2011

Если у меня есть собственный подкласс UIView, который реализует drawRect, а методы контроллера используют addSubview для создания иерархии представлений в этом настраиваемом представлении, как drawRect взаимодействует с этими подпредставлениями?Воссоздает ли он всю иерархию представлений подкласса с нуля и удаляет ли существующие подпредставления?Или он игнорирует подпредставления и перерисовывает только определенный вид / подпредставление?

Было бы приемлемо программно добавлять и удалять подпредставления в пределах drawRect?

Ответы [ 2 ]

8 голосов
/ 29 августа 2011

drawRect предназначен для только для отрисовки вашего контента в представлении.

Независимо от того, отрисовывает ли он весь вид или его часть: это зависит от вашей реализации.Если вы хотите провести какую-либо оптимизацию, рекомендуется проверить, когда ваше представление вызывает drawRect, и соответствующим образом изменить код (возможно, вы хотите обновить только одну часть представления, возможно, вы не хотите рисовать все время,так далее).Это зависит от ваших потребностей

Я не считаю хорошей идеей добавлять / удалять подпредставления в drawRect, потому что этот метод будет вызываться в нескольких ситуациях, и я осмелюсь сказать, что это НЕ то, что вы хотите)

Вместо этого вы можете попробовать что-то вроде этого:

[myView addSubview:aSubview];
[myView setNeedsDisplay];
//or calculate the needed display rect by yourself and then
[myView setNeedsDisplayInRect:aRect];
5 голосов
/ 29 августа 2011

-drawRect: не взаимодействует с подпредставлениями.Он рисует любой вид, в который он отправляется, хочет нарисовать в заданном прямоугольнике.

Допустимо ли программно добавлять и удалять подпредставления в drawRect?

NO. -drawRect: предназначен для рисования, а не для манипулирования иерархией представления.

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