UIviewには多くの点を描画する必要があるため、UIViewの上にアクティビティインジケータービューを表示したいと思います。
このようなことを試しましたが、うまくいきません。
-(void) drawRect:(CGRect)rect
{
[self.activityIndicatorView startAnimating];
CGContextRef cr = UIGraphicsGetCurrentContext();
// Lots of CG functions (take a few seconds)
[self.activityIndicatorView startAnimating];
}
描画中にスピニングホイールを表示するにはどうすればよいですか?
ソリューションで編集します(@dasblinkenlightに感謝します):
2つのUIImageView。1つはプレースホルダー(UIActivityIndicatorViewが実行される場所)として使用され、もう1つはRendererという名前のCGコンテンツを描画します。
ここで読むように、RendererクラスはUIImageを書き込みます。プレースホルダーが終了したときにdrawrect呼び出しを別のキュー(バックグラウンド)に配置すると、表示される画像を使用できます。
それがコードです:
dispatch_queue_t myQueue = dispatch_queue_create( "MyQueue"、0);
dispatch_async(myQueue, ^{ [self.renderer drawRect:self.placeholder.bounds]; dispatch_async(dispatch_get_main_queue(), ^{ [self.placeholder setImage:[self.renderer renderedImage]]; }); });
setNeedDisplayではなくdrawRect関数を直接呼び出さなければならない理由がわかりません。バックグラウンドで実行されているためでしょうか?