🐈

SwiftUIでダウンロードした画像を表示する

2021/03/22に公開
2

SwiftUIでサーバからダウンロードした画像を表示するコード。

func downloadImageAsync(url: URL, completion: @escaping (UIImage?) -> Void) {
    let session = URLSession(configuration: .default)
    let task = session.dataTask(with: url) { (data, _, _) in
        var image: UIImage?
        if let imageData = data {
            image = UIImage(data: imageData)
        }
        DispatchQueue.main.async {
            completion(image)
        }
    }
    task.resume()
}

呼び出し方。

ContentView.swift
struct ContentView: View {
    @State var image: UIImage?
    var body: some View {
        VStack {
            Text("Hello, world!")
                .padding()
            if let image = image {
                Image(uiImage: image)
            }
        }
        .onAppear {
            let url = "https://storage.googleapis.com/zenn-user-upload/avatar/fa39308ce0.jpeg"
            downloadImageAsync(url: URL(string: url)!) { image in
                self.image = image
            }
        }
    }
}

記事を書いた後にもっと簡単でスマートな方法を見つけました💦
https://qiita.com/From_F/items/e3eb8bd279f75b864865

Discussion

yorifujiyorifuji

Viewを作るのは考え付かなかった、さすがApple様☺️