カスタム 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:時間がかかるかもしれないという意味でした。