사용자 정의 UIView 클래스의 배경색을 설정하려고합니다. 이 클래스는 또한 drawRect:
메서드에서 석영 드로잉을 수행합니다.drawRect로 UIView backgroundColor 설정 :
다음에보기를 다시 그리기 전까지 배경색이 변경되지 않으므로 setNeedsDisplay
을 호출하기 전에 UIView의 backgroundColor
속성을 변경합니다. 뷰가 다시 그려지는 동안 UIActivityIndicatorView
을 애니메이션으로 설정했습니다.
self.backgroundColor = theColor;
[indicator startAnimating];
[self performSelectorInBackground:@selector(setNeedsDisplay) withObject:nil];
setNeedsDisplay
의 끝에서 표시기가 중지됩니다. theColor
이 전화 할 때마다 변경됩니다.
시간이 많이 걸리는 setNeedsDisplay
프로세스가 있다고 가정 해 봅니다. 배경을 설정하고 지표 애니메이션을 유지하고 싶습니다. 현재 backgroundColor
을 변경하면 setNeedsDisplay
이 호출되지만 performSelectorInBackground
메서드가 실행될 때까지 backgroundColor가 변경되지 않습니다. 따라서 내 응용 프로그램이 응답하지 않고 표시기도 애니메이션입니다. 이 주문 문제는 어떻게 처리합니까? 감사.
편집 : 나는 drawrect:
이 시간이 오래 걸릴 수 있음을 의미했습니다.
시도에서, 단지 주 스레드에서 UI를 업데이트 할 수 있습니다
'setNeedsDisplay'는 시간 소모적이지 않으며'drawRect :'입니다. 하지만 어쨌든'drawRect : '라고해서는 안됩니다. –