环境:
我正在创建一个“photo mosaic”应用程序,我尝试在屏幕上同时显示 1024(32*32) 张小图像(视网膜尺寸->w:30px h:20px)。这意味着总的来说,它与全屏图像大小相同。
问题:
我加载了 1024 个 UIImage,创建了 1024 个 UIImageView,并将它们全部添加到一个 UIView。当我滚动到这个 View 时,有一个很大的滞后:在 iPhone4(iOS 5) 和 iPhone5(iOS 6) 上测试。 iPhone4上才出现,iPhone5上没问题。 (假设 iPhone5 有更好的 CPU,所以我认为这是合理的)。
我的想法:
假设所有图像都已经从内存中的本地目录加载(使用方法“imageNamed”),所以我认为问题一定出在步骤显示/渲染图像的某个地方。
所以有什么想法吗?任何想法都会有所帮助。
非常感谢,
更新
听了@Antwan van Houdt 的建议后好多了。原理代码如下:
-(void)updateCoverImageView:(UIImageView *)smallImage{
UIGraphicsBeginImageContextWithOptions(self.frame.size, NO, 0.0f);
CGContextRef ctx = UIGraphicsGetCurrentContext();
[self.coverImageView.layer renderInContext:ctx];
[smallImage.image drawInRect:smallImage.frame];
self.coverImageView.image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
}
然后您只需将 smallImage 的 alpha 值设置为零,这样系统就不会渲染它们。封面图片将取代它。这适用于同时显示大量 UIView 导致的延迟问题。
最佳答案
每张图片都在自己的 View 中吗?
在任何一种情况下,对于如此大量的图像,您可能应该考虑在一个 View 中绘制它们,如果该绘制方法仍然太慢,您可以绘制一次,将 View 渲染为图像,然后简单地绘制该图像因为它是缓存显示。
Apple 提供了一些指南来处理自定义 View 绘图的性能和类似的东西......你应该读一读。
关于iphone - iOS 应用程序 : lag issue when display a huge amount of small images,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13778282/