慢性能Json图像分辨率

时间:2015-05-18 22:38:14

标签: ios objective-c iphone json uiimage

我的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)内显示三个完整大小的背景图像。我不知道为什么,但第一张图片从未出现过。我必须滑动页面控件以显示第二个,然后返回第一个。在第二次机会中,第一张图片出现了。

感谢您的帮助¡

1 个答案:

答案 0 :(得分:1)

因为你正在异步分配UIImageView,所有UI更改必须在主线程上同步进行才能正常执行,将第二个异步方法更改为纯同步并且应该可以正常工作

    dispatch_sync(dispatch_get_main_queue(), ^{
        cell.thumbImage.image = [UIImage imageWithData:imageData];
    });

但除了拥有更快的互联网连接外,您无法真正加快图像的下载速度