SDWebImageのドキュメントを読む
What is SDWebImage
非同期での画像のダウンロードや画像のキャッシュをサポートするライブラリ。 UIによってカテゴライズされている(UIImageView, UIButton, MKAnnotationView)
Read.meを読む
特徴
- UIによってウェブ画像の追加やキャッシュの機能がサポート
- 画像のダウンロード非同期で行う
- メモリーやディスクに画像を非同期で自動キャッシングする
- バックグランドで画像の解凍を行う
- 同じURLの画像は何回もダンロードしない事が保証されている
- 存在しないURLを何度もダンロードしない事が保証されている
- パフォーマンスGood
- GCDとARCを用いて実装されている
Supported Image Formats
WebPとは
Googleが提供している画像ファイルの形式で、Googleが開発した圧縮形式で重浦井の形式よりもファイルサイズを小さくすることを目的としている。
How to Use
Common Problems
Handle image refresh
SDWebImageはデフォルトの状態でキャッシュが積極的に使われる。よって通常のリクエストでは既にキャッシュされてあったURLはどんなリクエストでもそのキャッシュされたURLを取得する。しかし、リモートの画像のURLが変わった場合はそのキャッシュされたURLを更新する必要がある。そういう時はSDWebImageRefreshCached
というオプションを使用しよう。こうすることでレスポンスで得られた新しいURLを優先してキャッシュ上のURLを上書きしてくれる。
Documentation @ CocoaDocs
Using Blocks
ブロックを用いてる事で画像のダウンロードの進捗や画像のダンロードが完了したタイミングでダンロードが成功したら失敗したか通知してくれる。
※ もし途中でリクエスとキャンセルした場合、成功したか失敗したかの通知は呼ばれない。
Using SDWebImageManager
SDWebImageManger はUIImageview+WebCacheというクラスからできている。 UIViewなどに依存しない文脈の時に、直接画像のダウンロードやキャッシングを非同期で行う事ができる。
Using Asynchronous Image Downloader Independently
SDWebImageDownloaderというクラスを用いてることで非同期でも画像ダウンロードのみを独立して使用することも可能
Using Asynchronous Image Cashing Independently
画像のキャッシュを担うSDImageCasheクラスの独立して使用可能。ディスクにキャッシュを書き込む処理は非同期で行われるので、UIの操作に遅れを生じさせることはない。
SDWebCasheクラスはシングルトンなインスタンスとして設計されているが、独自で生成することもできる。必要であればインスタンスにキーとして名前を与えてあげることもできる。
Using cash key filter
同じ画像でもリクエストを送る度にURLが動的に変化する場合がある。この時一度キャッシュした画像を使用しようとしてもURLが変わっているので表示できない。そこでSDWebImageManagerが提供しているcacheKeyFilter
を用いる事で、URLの変更部(クエリの部分など)を取り除いたURLを返すことができる。