下载的图片需要很长时间才能在UIImageView上显示

时间:2015-08-17 07:02:44

标签: ios swift uiimageview uiimage

我的视图中有两个UIImageView对象存储在名为imgViews的数组中,我尝试使用此代码异步下载它们的图像:

   func showPic(positionIndex: Int){
    let urlStr = "https://www.friendesque.com/arranged/userpics/amir/1"
    let url = NSURL(string: urlStr)
    let session = NSURLSession.sharedSession()
    let task = session.dataTaskWithURL(url!, completionHandler: { (data, response, error) -> Void in

        if error == nil {
            self.imgViews[positionIndex].image = UIImage(data: data)
            //self.imgViews[positionIndex].image = UIImage(named: "11665489_10154101221228009_2542754962143804380_n.jpg")
            print("Loading Done...")

        }
        else{
            print(error)
        }
    })
        task.resume()
}

在我的viewDidLoad()中,我有

   showPic(0)

当我运行代码时,我立即看到 "Loading Done..." ,这意味着图片已经加载但是UIImageView实际更改为需要很长时间(约1分钟)加载的图片。这是一张非常小的图片(约15K),它不会成为处理时间问题。

我尝试加载资源图片(代码的评论部分)而不是下载的图片,但它仍然很慢。

我真的很困惑。为什么在处理块内的图像时,swift如此缓慢?

1 个答案:

答案 0 :(得分:1)

也许当数据任务返回时,它是在后台线程上?您将需要切换到主线程来更改UIImageView。无论我使用UIImageView + AFNetworking类别来实现这一目标。它很简单,经过良好测试,可让您在下载时提供占位符图像。

https://github.com/AFNetworking/AFNetworking/blob/master/UIKit%2BAFNetworking/UIImageView%2BAFNetworking.h

使用:

myImageView.setImageWithURL(url!)