是否可以预加载所有 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 单元格以在导航控制器中显示带有文本的视图控制器