在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ 本文演示如何下载并显示网络图片。 由于图片网址不是https安全路径,所以还需要修改属性配置文件。 【info.plist】->【Add Row】->【App Category】 ->【+】->【Allow Arbitrary】允许http的网络加载图片。->【YES】 1 import SwiftUI 2 3 struct ContentView : View 4 { 5 //添加一个UIImage类型的属性,该属性拥有@State标记, 6 //当该属性的值发生变化时,和该属性绑定的图像视图,将立即显示新的图像内容。 7 @State private var remoteImage : UIImage? = nil 8 //添加一个常量属性,作为占位符图片。 9 let placeholderOne = UIImage(named: "Picture") 10 11 var body: some View 12 { 13 //新建一个图像视图, 14 //如果网络图片属性的值不为空,则显示下载后的网络图片,否则显示占位符图片。 15 Image(uiImage: self.remoteImage ?? placeholderOne!) 16 //执行onAppear方法,这样当图片显示之后, 17 //将立即执行下载网络图片的方法。 18 //由于图片网址不是https安全路径, 19 //所以还需要修改属性配置文件。 20 .onAppear(perform: fetchRemoteImage) 21 } 22 23 //添加一个方法,用来下载网络图片。 24 func fetchRemoteImage() 25 { 26 //初始化一个字符串常量,作为网络图片的地址。 27 guard let url = URL(string: "http://hdjc8.com/images/logo.png") else { return } 28 //执行网址会话(URLSession)单例对象的数据任务方法,以下载指定的图片。 29 URLSession.shared.dataTask(with: url) 30 { (data, response, error) in 31 //当图片下载成功之后,将下载后的数据转换为图像, 32 //并存储在remoteImage属性中 33 if let image = UIImage(data: data!) 34 { 35 self.remoteImage = image 36 } 37 else 38 { 39 //如果图片下载失败,则在控制台输出错误信息。 40 print(error ?? "") 41 } 42 } 43 //通过执行恢复方法,开始下载指定路径的网络图片 44 .resume() 45 } 46 } 47 48 #if DEBUG 49 struct ContentView_Previews : PreviewProvider { 50 static var previews: some View { 51 return ContentView() 52 } 53 } 54 #endif
|
请发表评论