在我的第一个快速项目中,我通过在下载此图像的内容后向SubView添加新的UIImage来面临一些问题。 看起来下载速度非常快,但App需要另外5-15秒来更新视图。我不知道为什么。
这就是我所做的:
override func viewDidLoad() {
super.viewDidLoad()
//...
loadPic(PrevPic)
}
func loadPic(prevImage: UIImageView){
//... get URL; result in object["data"]
let fileUrl = NSURL(string: object["data"] as! String)
let session = NSURLSession.sharedSession()
let request = NSMutableURLRequest(URL: fileUrl!)
let task = session.dataTaskWithRequest(request){
(data, response, error) -> Void in
if error != nil {
print(error!.localizedDescription)
} else {
var imagePic: UIImageView?
let imageData = NSData(data: data!)
prevImage.removeFromSuperview()
let image: UIImage = UIImage(data: imageData)!
imagePic = UIImageView(image: image)
imagePic?.contentMode = .ScaleAspectFit
self.view.addSubview(imagePic!)
//... alignment
}
}
task.resume()
//...
}
一个想法为什么?
感谢您的支持。
答案 0 :(得分:0)
您不必从视图中删除UIImageView并将其添加回来。这需要花费很多时间。您应该用新的图像替换imageView的旧图像。您可以使用以下代码。
if let newImage = UIImage(data: imageData){
imageView.image = newImage
}
答案 1 :(得分:0)
当调用Web服务时,任务在主线程上执行,这就是UI变为冻结而没有响应的原因。要摆脱这个问题,请调用主队列并更新UI,如下所示:
dispatch_async(dispatch_get_main_queue(), {
// update UI
})
基本理念是
old.address:
id | country | city | street_address
1 | Ukraine | Kyiv | Bandery 26
2 | Poland | Warsaw | Kyrva 28
new.users:
id | name | address1 | address2
1 | Dohn | 1 | 2
2 | Kahn | 2 | 1