Swift・iOS

Swiftを中心に技術関連の記事を書いています

【Swift】NukeでURLの画像を表示/キャッシュ

■開発環境

Xcode 10.2

・Swift 5.0

・Nuke 7.5.1

 

■手順

1.Nukeをインストール

pod 'Nuke'

 

2.StoryboardでUIImageViewを配置

f:id:hfoasi8fje3:20190324002353p:plain

 

3.StoryboardのImageViewをViewControllerに関連づける

 

4.ViewControllerに以下実装

https://www.hfoasi8fje3.work/entry/2019/03/30/233506tと同様で、

https://www.hfoasi8fje3.work/entry/2019/03/24/003421や、https://www.hfoasi8fje3.work/entry/2019/03/24/133155

のようにライブラリを使わずに実装するより簡潔に書けます。

import UIKit
import Nuke

class ViewController: UIViewController {
    
    @IBOutlet weak var imageView: UIImageView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        let url = URL(string: "{画像URL}")!
        Nuke.loadImage(with: url, into: imageView)
    }
}

 

上記の実装では以下の処理が実行されているようです。 

1.画像がメモリキャッシュ内で利用可能かどうかを同期的にチェック。

2.利用可能でなければ画像をロード。

 ※ロードを開始する前に、同じ画像に対する既存の未処理の要求があるかどうかも確認。見つかった場合は新しい要求は作成されない。

3.データのロード後、画像データをデコード。処理された画像はメモリキャッシュに保存され、完了クロージャに返される。

 

■参考リンク

https://github.com/kean/Nuke#h_design