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

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です