web-dev-qa-db-ja.com

iOS-画像を非同期的にキャッシュおよびロードする

IOS用の画像の読み込みおよびキャッシュライブラリが必要です。

  • 画像を非同期に読み込みます。
  • 設定可能なキャッシュサイズとLRU動作で画像をキャッシュします。
  • hTTP HEADを使用して、画像が更新されたかどうかを確認します。
  • エラーコードまたは無効な画像のイベントでは何もキャッシュしません。

HJCache を見てきましたが、これらの基準の最初の2つを満たすだけです。もっと良いものはありますか?

43
nornagon

私はこのスレッドが回答されたことを知っていますが、私は素晴らしい仕事をしているライブラリを試しました。以前にASIHttpRequestを使用していましたが、違いは大きいです。

https://github.com/rs/SDWebImage

また、誰かがリモート画像をサイズ変更またはトリミングする必要があり、SDWebImageが提供するのと同じ機能を持っている場合、SDWebImageライブラリをUIImage + Resizeライブラリ(Trevor Harmon作)と統合し、サンプルプロジェクトを作成しました。 SDWebImageのコードを変更して、変換(トリミング、サイズ変更)を処理しました。

プロジェクトは https://github.com/toptierlabs/ImageCacheResize で公開されています。気軽に使用してください!

29
Tony

編集:ASIは非推奨になりましたが、@ Tonyの答えには、これのほとんどを行うライブラリへのリンクがあります(免責事項-私はまだ試していないので、@ Tonyの推奨に従っています!)


ASIHTTPRequest はすべてを行います:)

あなたがしなければならないのは、成功コールバックに何かを追加することです

UIImage *image = [UIImage imageWithData:[request responseData]];

// If the image is nil ASIHTTPRequest will let you remove the data from the cache
// but I can't remember off the top of my head how. Checkout the docs!

編集

そして、あなたがそれを終えたとき、あなたは私たちの残りのために常にgithubにそれをポップすることができます。 。 。

25
deanWombourne

最近、あなたが説明するようなもの、つまり一般的なデータキャッシュ、またはイメージ中心のキャッシュを探しましたが、あまり興味がありませんでした。そのため、これらすべての機能を使用するには、独自にロールする必要があります。

http://davidgolightly.blogspot.com/2009/02/asynchronous-image-caching-with-iphone.html など、さまざまなブログの投稿や、そのようなことを詳述するものがあります。

Three20ライブラリを検討したと思いますか?ただし、あなたの要件をカバーするとは思わない。

1
occulus