[swift] 高機能imageダウンロードモジュール[SDWebImage]の実装
目次
高機能imageダウンロードモジュール[SDWebImage]の実装
SDWebImageは画像を非同期でダウンロードとダウンロードした画像のキャッシュをおこなってくれるFacebookアプリも使用していると言われる高機能なモジュール
インストール方法
Podでインストール可能なので、Podfileに追記
pod 'SDWebImage'
ターミナルからインストール
pod install
Bridging-Header.hに追記
#import
サンプルコード(UIimageViewで実行)
cell.imageview.sd_setImageWithURL(NSURL(string: "https://www.yahoo.co.jp/icon.png"), placeholderImage: UIImage(named:"circle.png"), options: SDWebImageOptions.CacheMemoryOnly)
placeholderImageでダウンロード完了前の画像を指定
CacheMemoryOnlyでメモリだけにキャッシュし、内部ディスクには貯めないようにしている
サンプルコード(UIimageViewがなく、imageだけダウンロードしたい場合)
SDWebImageManager.sharedManager().downloadImageWithURL(NSURL(string: "https://www.yahoo.co.jp/icon.png"), options: SDWebImageOptions.CacheMemoryOnly, progress: { (a: Int, b:Int) -> Void in }, completed: { (image: UIImage!, error: NSError!, cacheType: SDImageCacheType, bool: Bool, url:NSURL!) -> Void in //imageが取得できた場合の処理をここへ })
CacheMemoryOnlyでメモリだけにキャッシュし、内部ディスクには貯めないようにしている
例2:キャッシュに対象画像がなければ、読み込みしキャッシュする
sampleImageというキーにキャッシュがあるか確認、キャッシュがなければSDWebImageで読み込みしキャッシュ保存
var imageView:UIImageView SDWebImageManager.sharedManager().imageCache.queryDiskCacheForKey("sampleImage", done: { (image: UIImage!, type: SDImageCacheType) -> Void in //キャッシュがあれば画像をキャッシュから利用 if((image) != nil){ imageView:UIImageView.image = image }else{ SDWebImageManager.sharedManager().downloadImageWithURL("https://test.com/sampleImage.png", options: SDWebImageOptions.CacheMemoryOnly, progress: { (a: Int, b:Int) -> Void in }, completed: { (image: UIImage!, error: NSError!, cacheType: SDImageCacheType, bool: Bool, url:NSURL!) -> Void in //imageが取得できた場合の処理をここへ imageView:UIImageView.image = image //キャッシュをキー指定で保存 SDWebImageManager.sharedManager().imageCache.storeImage(image, forKey: "sampleImage") }) } })