我正在构建一个应用程序,该应用程序需要将一堆本地镜像显示在 uitableviewcell 的 ImageView 中。但是,我在优化 uitableview 的性能时遇到了困难。我特别注意到两个问题:首先, View 需要一段时间才能加载。其次,当显示新单元格时,滚动会变得迟缓。
viewDidLoad 正在像这样加载图像:
for (Object *object in self.objects)
{
object.thumbnail = [UIImage imageNamed:object.imageName];
}
这显然会导致长时间加载问题,但我不确定还有什么方法可以加载这些图像。是尺寸问题吗?这只是一种糟糕的做法吗?
显示图像的过程似乎也有问题,换句话说,即使将图像分配给缩略图属性后,它们仍然需要很长时间才能绘制。
虽然这是一个特定案例,但我更普遍地好奇苹果如何如此高效地加载照片中的图像。有什么见解吗?谢谢
最佳答案
每当我发现我的 UI 滞后时,我首先怀疑我正在同步执行某些操作(在主线程上),而这些操作本应异步执行(在后台线程上)。
我也很好奇 Apple 究竟是如何在照片应用中实现这种性能的。我现在正在编写一个与您的要求相似的应用程序。我目前的方法是在用户打开我的 View Controller 时将一堆照片从磁盘异步加载到内存中,并在用户滚动时继续从内存中加载(和删除照片) - 提前。
目前,我在索引路径的行单元格中异步加载磁盘中的每张照片,速度非常快,但如果您快速滚动表格 View ,则会导致这种级联效果发生。也就是说,在照片出现之前,单元格会暂时显示为空。
我希望这对您有所启发。
您可能也有兴趣尝试 SDWebImage - 它包含一个图像缓存对象,在处理本地照片时让我的生活变得更轻松。
关于ios - iPhone 照片应用程序如何如此快速流畅地加载这么多图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13481561/