我的iphone应用程序使用一些图像作为完整背景。它已经从JSon下载图像并在我运行应用程序时显示它们。我用了这段代码:
dispatch_async(dispatch_get_global_queue(0,0), ^{
NSData *imageData = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString: newIndex[@"imageInside1"]]];
dispatch_async(dispatch_get_main_queue(), ^{
cell.thumbImage.image = [UIImage imageWithData:imageData];
});
});
但是当我运行应用程序时,显示图像需要很长时间。我认为是因为图像的分辨率(当它从互联网上下载并显示在应用程序中)。所有这些都是1242x2208.jpg(与iPhone 6 Plus相同),因为我想保证所有尺寸背景的正确分辨率。我在做正确的程序吗?还有另一种方法可以让它更快吗?有必要把它们放到1242x2208大小吗?jpg对我来说是更快的文件类型?
我的应用是一个包含不同项目的桌面视图。当用户单击其中一个单元格时,它必须在Page ViewController和Page Control(作为教程ViewControllers)内显示三个完整大小的背景图像。我不知道为什么,但第一张图片从未出现过。我必须滑动页面控件以显示第二个,然后返回第一个。在第二次机会中,第一张图片出现了。
感谢您的帮助¡
答案 0 :(得分:1)
因为你正在异步分配UIImageView,所有UI更改必须在主线程上同步进行才能正常执行,将第二个异步方法更改为纯同步并且应该可以正常工作
dispatch_sync(dispatch_get_main_queue(), ^{
cell.thumbImage.image = [UIImage imageWithData:imageData];
});
但除了拥有更快的互联网连接外,您无法真正加快图像的下载速度