2016-04-05 3 views
1

ウェブURLからUITableViewCellに画像をロードしています。これらの画像のサイズは画像あたり約80〜100kbです。私は非同期的に画像をダウンロードするとすべてうまく動作します。but when i scroll the tableview, images start again downloading. Can i get rid of this私は行の数が制限されているので。 URLダウンロードの画像をもう一度ダウンロードしてはならない場合は、画像のダウンロードが再開されたときにユーザーが快適に閲覧できないようにします。iOS UITableViewCell URLからの画像

私はCellforRowAtIndexPathで画像をロードするためのコードの下に使用しています:

dispatch_async(dispatch_get_global_queue(0,0), ^{ 
    NSData * data = [[NSData alloc] initWithContentsOfURL: [NSURL URLWithString:url]; 
    if (data == nil) 
     return; 
    dispatch_async(dispatch_get_main_queue(), ^{ 
     cell.eventImage.image= [UIImage imageWithData:data]; 

    }); 
}); 
+1

SDWebImageを使用してイメージをキャッシュし、最初にdownload.https://github.com/rs/SDWebImage –

答えて

0

あなたのデバイス上の画像をキャッシュし、同じ画像がサーバーから来たならば、それはあなたのローカルデバイスからロードするSDWebImageを使用する必要があります。

  1. プロジェクトにSDWebImageを追加します。
  2. インポート<SDWebImage/UIImageView+WebCache.h>ヘッダ

    次いでcellForItemAtIndexPathにコードの下に追加:この有利なサードパーティライブラリがキャッシュ内に画像を格納するため

    [cell.imageView sd_setImageWithURL:[NSURL URLWithString:@"your image URL"] 
         placeholderImage:[UIImage imageNamed:@"placeholder.png"]]; 
    
0

ベターこのためSDWebImageCacheを利用します。一度ダウンロードすると、画像は自動的にキャッシュから取得されます。

SDWebImageCache

0

あなたが画像をダウンロードドキュメントディレクトリにそれを入れて、ドキュメントディレクトリが含まれている場合は、画像のチェックをダウンロードする前に、あなたは、あなたがそれを作ることができますしたい場合は、画像は、そうでない場合はURL

0

からダウンロードし、そこからそれを読み込みますあなた自身。 NSCacheを使用して画像を保存することができます。 NSCacheはNSMutableDictionaryに似ています(キーでイメージを保存します)。そしてそれを確認することができます。キーの場合は、画像へのパスを使用することができます。 でも、SDWebImageをお使いになることをおすすめします。

関連する問題