0

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

4

2 に答える 2

0

バックグラウンドではなくメインスレッドでのみUIを更新できます

アクティビティ インジケーターを含む別のサブビューを使用してみてください。再描画の前に配置し、後でスーパービューから削除してください。

于 2013-02-24T00:29:39.117 に答える