问题描述
我正在编写一个使用iDevice相机拍摄照片并将其作为PNG存储在文件系统上的应用程序.启动我的应用程序时,我将加载一个UICollectionView以及在文件系统上找到的图像.
I am writing an app that takes a picture using the iDevice camera and stores it on the file system as a PNG. When starting my app, I load a UICollectionView with the images found on the file system.
我面临的问题是该应用程序的加载时间(即使仅加载6张图像大约需要4秒,这也是无法接受的.我已经实现了GCD在后台线程上加载图像(这使UI保持活泼)但是,我真的希望应用程序在加载图像后能更快地启动.
The issue I am facing is that the load time for the app (even when its only loading 6 images is approximately 4 seconds which is unacceptable. I have implemented GCD to load images on a background thread (which keeps the UI snappy) however I really want the app to start far quicker with images loaded.
我的想法是:
我怀疑initWithContentsOfFile
需要花费很多时间才能加载完整尺寸的图像.我考虑过要在拍摄照片时生成一个单独的缩略图,然后加载该缩略图.
I suspect the initWithContentsOfFile
is taking ages to load the full size image.I thought about generating a separate thumbnail image when a picture is taken and load that instead.
当我查看Apple的Photo应用程序时,它最终会立即"加载并显示10张图片.
Ultimately when I look at Apple's Photo app, it loads "instantly" and has 10's of pictures in view.
有人对我如何更快地加载图像或至少看起来看起来有什么建议吗?
Does anyone have any suggestions for how I can load the images faster or at least appear to?
谢谢!
推荐答案
尝试一下
在后台线程中加载图像并在主线程中设置
Load image in background thread and set in main thread
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
UIImage *image = [UIImage imageWithContentsOfFile:frontPath];
dispatch_async(dispatch_get_main_queue(), ^{
[self.frontButton setBackgroundImage:image forState:UIControlStateNormal];
});
});
这篇关于性能-UICollectionView加载时间非常慢的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!