是否可以预加载所有 tableview 单元格以启用平滑滚动?

Posted

技术标签:

【中文标题】是否可以预加载所有 tableview 单元格以启用平滑滚动?【英文标题】:Is it possible to preload all tableview cells to enable smooth scrolling? 【发布时间】:2009-08-29 04:16:58 【问题描述】:

我有一个表格视图,它只包含几个 (~5) 单元格,每个单元格中都有一个大图像。是否可以预加载所有单元格以提高滚动性能? 现在,每个单元格加载时都会有轻微的抖动。 谢谢!

【问题讨论】:

【参考方案1】:

我认为直接告诉 TableView 预先创建其所有单元格是不可能的,但假设缓慢的部分正在加载您的图像,您当然可以预先加载您的图像,将它们保存在 NSArray 或一些东西,然后在创建它们时将它们放入单元格中应该很快。

【讨论】:

我应该如何预加载我的图片?【参考方案2】:

是的。你可以。它会消耗内存,但性能会最大化。

但只有在您确定单元格不是太大时才这样做。也不要忘记释放它们。

【讨论】:

【参考方案3】:

我发现我的 tableview 滚动不佳的原因是照片的加载方式。使用 imageNamed 加载图像解决了我的所有问题。

UIImage *theImage = [UIImage imageNamed:[[appDelegate.myDelegateDict objectAtIndex:indexPath.section] objectForKey:@"MainImage"]];

【讨论】:

是的,但它会将图像保留在内存中,而不是释放它们。因此,如果您有大量图像,您最终可能会导致应用崩溃。【参考方案4】:

创建表格视图单元格不是您的问题,它是您从/调整图像大小的过程访问图像的地方,因此您需要提前执行此操作,或者使其异步以便它不会不要减慢单元格加载和滚动速度。

我经历过这件事。请参阅this question and answer 获取解决方案。

【讨论】:

以上是关于是否可以预加载所有 tableview 单元格以启用平滑滚动?的主要内容,如果未能解决你的问题,请参考以下文章

取消注册单元格以在 TableView/CollectionView 中重用有啥意义吗?

如何在一个 tableView 上提供超过 2 个自定义单元格以进行聊天

如何按下 tableview 单元格以在导航控制器中显示带有文本的视图控制器

自定义表格单元格以显示图像

如何检测 nib 文件表格视图单元格以制作 ReusableCell?

预加载自定义 UITableViewCells 然后让它们在 tableview 中重新使用