アプリに HUD パネルがあり、一連の画像を取得して、次の画像を表示する前に、パネルに各画像を数秒間表示できるようにしたいと考えています。私はココアに非常に慣れていないため、これを実装するのに問題があるため、いくつかの指針を歓迎します. これが私が現在試していることです:
[newShots enumerateObjectsUsingBlock:^(NSDictionary *obj, NSUInteger idx, BOOL *stop)
{
//get url
NSURL *imageUrl = [[NSURL alloc] initWithString:[obj objectForKey:@"image_url"]];;
//get image from url
NSImage *image = [[NSImage alloc] initWithContentsOfURL:imageUrl];
//set it to shot panel
[shotPanelImageView setImage:image];
//clean up
[imageUrl release];
[image release];
//set needs refresh
[shotPanelImageView setNeedsDisplay:YES];
//sleep a few before moving to next
[NSThread sleepForTimeInterval:3.0];
}];
ご覧のとおり、各画像の情報をループして、URL 経由で画像を取得し、ビューに設定してから、次に進む前に数秒間スレッド スリープを呼び出しています。問題は、ビューが割り当てられたときに新しいイメージで再描画されないことです。setNeedsDisplay:YES は再描画を強制すると思いましたが、コレクションの最初の画像しか表示されません。私は NSLog() を入れてデバッグしましたが、新しい画像情報が適切に設定されていることを確認できるため、列挙が正しく機能していることを確認しています。
私が見逃しているものはありますか、それともこの問題を解決するための完全に間違った方法ですか?
ありがとう、
クレイグ