インターネットからダウンロードした写真のギャラリー ビューがあるので、Enormego の EGOImageView を使用しました。画像がキャッシュに入った後にテーブルビューを下にスクロールすると、スクロールが遅れることに気付きました。イメージがハード ドライブから取得されたときreturn [UIImage imageWithContentsOfFile:cachePathForKey(key)];
、メイン スレッドで動作していることがすぐにわかったので、操作を NSOperationQueue に追加しました。これにより、ラグが半分に短縮されましたが、スクロールはまだ途切れていました. コードを調べた後、成功メソッドであることに気付きました
- (void)imageLoaderDidLoad:(NSNotification*)notification {
if(![[[notification userInfo] objectForKey:@"imageURL"] isEqual:self.imageURL]) return;
UIImage* anImage = [[notification userInfo] objectForKey:@"image"];
self.image = anImage;
[self setNeedsDisplay];
if([self.delegate respondsToSelector:@selector(imageViewLoadedImage:)]) {
[self.delegate imageViewLoadedImage:self];
}
}
コメントアウトするself.image = anImage;
と、ラグが完全に解消されます(ただし、明らかに画像が表示されません)。私が知る限り、UI を変更したい場合は、メイン スレッドで行う必要があります。スクロールを遅らせずに EGOImageView の画像を設定する方法はありますか?
注: JPG は約 50kB です
ありがとう