WWDC20 忘記更新組件
WWDC20 給SwiftUI增加了很多組件,但是卻忘記網絡組件更新,例如讓Image支持載入網絡照片。本文將幫SwiftUI把這個短板補上。
本文價值與收穫
看完本文後,您將能夠作出下面的界面
解決方案
之前在網上搜到了URLImage的解決方案,不過測試之後發現了很多問題。於是還是計劃自己手寫一個吧。其實蘋果到Combine組件早就能夠滿足這個類小需求了。
實戰代碼
1、 理想化到URLImage組件
struct URLImage: View {
@ObservedObject var imageLoader:ImageLoader
@State var image:UIImage = UIImage()
init(withURL url:String) {
imageLoader = ImageLoader(urlString:url)
}
var body: some View {
VStack {
Image(uiImage: image)
.resizable()
.aspectRatio(contentMode: .fit)
.frame(width:100, height:100)
}.onReceive(imageLoader.d