Ios 如何加速tableview';它的性能与许多图像?

Ios 如何加速tableview';它的性能与许多图像?,ios,performance,uitableview,caching,uiimage,Ios,Performance,Uitableview,Caching,Uiimage,我正在开发一个iPad应用程序。我有一个uitableview,其中每个单元格大约有四到五个图像。屏幕上几乎有四到五个单元格 所以屏幕上大约有20~30幅图像 图像不是很大,可能是200*200。(已经有点像土钉了) 所有图像都是本地资源 问题是,当第一次向下滚动tableview时,它需要加载新单元格,当然还有单元格中的图像。这使得UI变得滞后 但当你向上滚动时,它非常平滑。我知道这是因为UIImage类会缓存一些图像。当回滚时,图像会被缓存,所以它很平滑 所以我的问题是如何处理这个问题 1.

我正在开发一个iPad应用程序。我有一个uitableview,其中每个单元格大约有四到五个图像。屏幕上几乎有四到五个单元格

所以屏幕上大约有20~30幅图像

图像不是很大,可能是200*200。(已经有点像土钉了)

所有图像都是本地资源

问题是,当第一次向下滚动tableview时,它需要加载新单元格,当然还有单元格中的图像。这使得UI变得滞后

但当你向上滚动时,它非常平滑。我知道这是因为UIImage类会缓存一些图像。当回滚时,图像会被缓存,所以它很平滑

所以我的问题是如何处理这个问题

1.制作尽可能小的缩略图

2.预加载一些图像?(如何?)


3.使用自定义缓存?(如何使用?

如果表中没有那么多图像-您可以在创建视图时通过加载图像进行预缓存。否则,在后台线程中使用更通用的异步加载方法。

如果表中没有那么多图像,您可以在创建视图时通过加载图像进行预缓存。否则,在后台线程中使用更通用的异步加载方法。

我建议使用GCD获取图像。我还将对
UITableViewCell
进行子类化,并在它的
drawRect:
中绘制视图层上的所有图片。这将大大提高您的性能。

我建议使用GCD获取图像。我还将对
UITableViewCell
进行子类化,并在它的
drawRect:
中绘制视图层上的所有图片。这将显著提高性能。

异步加载将是更好的方法。我在我的应用程序中使用了它,它非常流畅。我完全同意,但是有时候最简单的事情就是最好的)异步加载将是更好的方法。我在我的应用程序中使用了它,它非常流畅。我完全同意,但是有时候最简单的事情可以做到最好)实际上根据我的经验,UIImageView最适合在tableview中绘制图像,尤其是当它们是缩略图时。我在某个地方读到UIImageView使用GPU,而as drawRect(即CoreGraphics)使用CPU。这是正确的,但将四个图像合并为一个,也在视图层上绘制,是一个性能提升。我刚才正在构建类似的东西,我发现
CGContextDrawImage()
[imageView.layer renderInContext:][/code>更快。但这仅适用于在同一层中绘制所有图像的情况。事实上,根据我的经验,UIImageView最适合在tableview中绘制图像,尤其是当它们是缩略图时。我在某个地方读到UIImageView使用GPU,而as drawRect(即CoreGraphics)使用CPU。这是正确的,但将四个图像合并为一个,也在视图层上绘制,是一个性能提升。我刚才正在构建类似的东西,我发现
CGContextDrawImage()
[imageView.layer renderInContext:][/code>更快。但这仅适用于在同一层中绘制所有图像的情况。