原文链接:https://github.com/fzhlee/SwiftUI-Guide#-%E7%AC%AC20%E8%8A%82image-web-
异步加载网络图片。
示例代码:
struct ContentView : View {
@State private var remoteImage : UIImage? = nil //该属性拥有@State标记,所以当该属性的值发生变化时,和改属性绑定的图像视图,将立即显示新的图像内容
let placeholderOne = UIImage(named: "Picture") //占位图
var body: some View {
Image(uiImage: self.remoteImage ?? placeholderOne!) //如果网络图片属性的值不为空,则显示下载后的网络图片,否则显示占位符图片
.onAppear(perform: fetchRemoteImage) //当图片显示之后,将立即执行下载网络图片的方法
}
func fetchRemoteImage() //用来下载互联网上的图片
{
guard let url = URL(string: "http://hdjc8.com/images/logo.png") else { return } //初始化一个字符串常量,作为网络图片的地址
URLSession.shared.dataTask(with: url){ (data, response, error) in //执行URLSession单例对象的数据任务方法,以下载指定的图片
if let image = UIImage(data: data!){
self.remoteImage = image //当图片下载成功之后,将下载后的数据转换为图像,并存储在remoteImage属性中
}
else{
print(error ?? "") //如果图片下载失败之后,则在控制台输出错误信息
}
}.resume() //通过执行resume方法,开始下载指定路径的网络图片
}
}
注:在进入实时预览模式之后,才会进行网络链接和数据的下载
网友评论