我有UIScrollView里面有很多UIImageView。在loadView方法中,我为每个子视图UIImageView图像分配一些临时图像,并启动多个线程以异步下载来自Internet的图像。每个线程下载和分配图片如下:ScrollView内容异步下载问题
NSData *data = [NSData dataWithContentsOfURL:URL];
UIImage *img = [UIImage imageWithData:data];
img_view.image = img;
这是问题所在 - 我希望通过我下载每个图像后画面会发生变化可以看到只是暂时的图像,直到所有的图像将下载。 UIScrollView中仍然同时图片下载互动 - 我可以滚动里面暂定图像,看看运行循环滚动条并没有什么块,但下载的图像没有更新..
我试图这样做:
- 调用sleep ()在下载线程 - 没有帮助。
- 为ScrollView和ScrollView中的每个ImageView调用setNeedsDisplay - 没有帮助。
怎么了?谢谢。
更新。我尝试了一些线程数量和下载图片数量的实验。现在我确定 - 只有线程完成后才能重绘图像。例如 - 如果我用一个线程加载100个图像 - 在所有图像下载完毕后,图片会更新一次。如果我将线程数量增加到10次 - 更新10次 - 每次更新都会显示10个图像。
再一次更新。我通过每次下载一个图像并退出当前线程时从下载线程中盯着新线程来解决问题(而不是在下载线程中的一个线程中下载多个图像并退出线程)。显然这不是一个好的解决方案,必须有正确的方法。