スタックが言うように、画像を非同期でロードする必要があります。UIImageView
これを非常に簡単にする素晴らしいカテゴリがあります。つまり、SDWebImageまたはAFNetworkingのカテゴリです。これらのUIImageView
カテゴリは、画像を非同期的にロードするだけでなく、キャッシュを実行したり、必要に応じてネットワーク操作をキャンセルしたりします。これを自分で適切に行うと (今列挙したすべての機能をキャプチャするため)、多くのコードが必要になりますが、これらのカテゴリのいずれかを使用します。
たとえば、SDWebImage を使用する場合、次のことができます。
#import "UIImageView+WebCache.h"
その後:
[cell.imageView setImageWithURL:url placeholderImage:[UIImage imageNamed:@"placeholder.png"] completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType) {
if (error)
NSLog(@"%s: setImageWithURL error: %@", __FUNCTION__, error);
}];
または、AFNetworking を使用している場合:
#import "UIImageView+AFNetworking.h"
と
[cell.imageView setImageWithURL:url placeholderImage:[UIImage imageNamed:@"placeholder.png"]];
また
[cell.imageView setImageWithURLRequest:[NSURLRequest requestWithURL:url] placeholderImage:[UIImage imageNamed:@"placeholder.png"] success:nil failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error) {
NSLog(@"%s: setImageWithURLRequest error: %@", __FUNCTION__, error);
}];