iphone - iOS 应用程序 : lag issue when display a huge amount of small images

标签 iphone ios image uiimageview uiimage

环境:

我正在创建一个“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/

相关文章:

javascript - 如何防止 iPhone ios 视频播放器跳过广告?

iphone - 需要 Bonjour 两次?

image - 为什么图像序列比源视频大(大小)?

ios - 自定义控制中心 Swift 和 IOS 9+

ios - 获取的结果 Controller 不会在运行时更新表

c++ - 我想在 opengl 中将图像包裹在一个球体周围

css - div的背景不显示

iphone - 代码 iPhone 图像绘制线条

iphone - 将 IBOutlet 链接到 iPhone 和 iPad Storyboard

ios - 自定义 UIResponder 子类