项目 urlimage
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var url_imageVIew: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
//URL转换为string
let image_url = URL(string: "https://jbjt.oss-cn-shanghai.aliyuncs.com/status%2Ffont%2Fimg%2F20180919/banner_01.png")
//创建 URLRequest(URL:url) 的实例对象
let request = URLRequest(url: image_url!)
//创建任务
let task = URLSession.shared.dataTask(with: request) { (data, responce, error) in
if error != nil {//错误存在为真
print(error!)
}else{//错误不存在
if let imageData = data{
//加入主线程
DispatchQueue.main.async {
//下载的数据赋值给data
self.url_imageVIew.image = UIImage(data: imageData)
//控制图片视图的填充模式
self.url_imageVIew.contentMode = UIView.ContentMode.scaleAspectFit
}
}
}
}
//执行
task.resume()
// Do any additional setup after loading the view, typically from a nib.
}
@IBAction func change_image_button(_ sender: UIButton) {
//引用网络图片到程序上的imageView,逻辑是建立URLSession.shared.dataTask()实例化对象,这个对象需要
//URLSession.shared.dataTask(with: <#T##URLRequest#>, completionHandler: <#T##(Data?, URLResponse?, Error?) -> Void#>) 需要URLRequest,这个要先创建;闭包中就是链接图片引用完成后要执行的动作
//建立参数;1,将URL变成string 使用 URL()类实例化的方法,获取对象
let url = URL(string: "http://www.runoob.com/wp-content/uploads/2013/11/ios.png")
//2,创建URLReuqest() 类的实例化对象
let url_request = URLRequest(url: url!)
//把参数带入最终的任务对象
let task = URLSession.shared.dataTask(with: url_request) { (data, responce, error) in
//data是文件数据,可以进行操作使用,,responce 网络响应对象信息,内容可以查询,error 错误。
if error != nil {//错误存在为真
print(error!)
}else{//错误不存在为真
print(data!)
print("==================================")
print(responce!)
//图片视图操作必须加入主线程
DispatchQueue.main.async {
//执行视图操作,更换视图的图片,注意使用的是UIImage(data:data)模式,这里的data 就是获取的数据对象
self.url_imageVIew.image = UIImage(data: data!)
//控制图片视图的填充模式
self.url_imageVIew.contentMode = UIView.ContentMode.scaleAspectFit
}
//若不加入主线程会报错 UIImageView.image must be used from main thread only
}
}
//执行任务
task.resume()
}
}