环境:
我正在创建一个“照片马赛克”应用程序,我尝试同时在屏幕上显示 1024(32*32)张小图像(视网膜尺寸->w:30px h:20px)。这意味着总的来说,它与全屏图像大小相同。
问题:
我加载了 1024 个 UIImage,创建了 1024 个 UIImageView,并将它们全部添加到 UIView。当我滚动到这个视图时,有一个很大的滞后:在 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 导致的滞后问题。