[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")
})
}
})