我想知道如何在不延迟用户的情况下加载图像。
我一直在尝试从网址加载图片,在显示视图并显示所有用户信息后,所以当用户点击按钮时,视图会立即显示。
由于
答案 0 :(得分:0)
您提出的任何解决方案都需要异步加载图像(即在后台)。我建议您在从JSON获取URL后立即启动后台线程来加载图像,这样当用户点击按钮显示它时它就会准备就绪。
我还建议进行一些缓存,因此以前下载的图像已经“在磁盘上”,无需通过网络显示。
Here's a sample project I did that displays how to load (and cache) images from URL's。它不是JSON,但它可能会帮助你。
答案 1 :(得分:0)
使用NSURLConnection进行下载:
NSURLRequest* req = [NSURLRequest requestWithURL:url];
NSOperationQueue* q = [NSOperationQueue mainQueue];
[NSURLConnection sendAsynchronousRequest:req queue:q
completionHandler:^(NSURLResponse *resp, NSData *d, NSError *err) {
if (d) {
UIImage* im = [UIImage imageWithData:d];
// do something with the image
}
}];
下载发生在后台线程上,因此用户不会延迟,并且(最重要的)主线程未被阻止;但是一旦下载完成,完成处理程序就会在主线程上发生,所以现在可以安全地将图像粘贴到您的界面中,或者将属性设置为它或其他任何东西。