🐈
SwiftUIでダウンロードした画像を表示する
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
}
}
}
}
記事を書いた後にもっと簡単でスマートな方法を見つけました💦
Discussion
すごいそれっぽい
AsyncImage
というのがでるみたいですよ!iOS15からですが。。。
Viewを作るのは考え付かなかった、さすがApple様☺️