Я пытаюсь установить цвет фона пользовательского класса UIView. Класс также рисует кварц по методу drawRect:
.
Поскольку изменение цвета фона не происходит до следующей перерисовки представления, я изменяю свойство backgroundColor
UIView перед вызовом setNeedsDisplay
. Я установил UIActivityIndicatorView
для анимации во время перерисовки вида.
self.backgroundColor = theColor;
[indicator startAnimating];
[self performSelectorInBackground:@selector(setNeedsDisplay) withObject:nil];
Индикатор останавливается в конце setNeedsDisplay
. theColor
будет меняться каждый раз, когда мне нужно это вызвать.
Допустим, у меня есть трудоемкий setNeedsDisplay
процесс. Я хотел бы установить фон и сохранить анимацию индикатора. В настоящее время изменение backgroundColor
вызывает setNeedsDisplay
, но даже не изменяет backgroundColor, пока не запустится метод performSelectorInBackground
! Поэтому мое приложение зависает, и индикатор никогда не анимируется. Как решить эту проблему с заказом? Спасибо.
Изменить: я имел в виду, что мой drawrect:
может занять много времени.
setNeedsDisplay
не занимает много времени, этоdrawRect:
. но вы все равно не должны звонитьdrawRect:
. - person Bryan Chen   schedule 24.02.2013