gpt4 book ai didi

ios - 提高使用自定义单元格滚动 UITableView 时的性能

转载 作者:行者123 更新时间:2023-11-30 12:54:51 26 4
gpt4 key购买 nike

我有一个 UITableView ,其中单元格是自定义的,并且单元格有一个带有图表的 View (Charts 库)。图表的数据相当大(它存储为 Controller 的属性),它会在几秒钟内出现。

此外,我还在自定义 TableViewCell 类中的 setSelected 方法中进行了一些图 TableView 设置(仅进行了一些 UI 更改)

滚动表格 View 时会出现一些滞后。我想这是因为我想显示大量内容。

在解决这个问题的过程中,我想到了四种解决方案:

  1. 加载ViewDidAppear中的所有单元格,将它们保存到数组中,在CellForRowAt方法中显示该数组中的单元格。

  2. 将表格 View 放入 ScrollView 中,使内容的高度足够大以适合表格 View 中的所有单元格。

  3. 仅在单元格加载及其内容 View 出现后才加载图表。在图表加载时显示事件指示器。

  4. 将图表的加载放在后台线程中。

在我看来,前两种方法在内存管理方面不太好。但我不确定,也许有我不知道的通用解决方案。

项目中的一些代码示例:

     func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

let graphCell = tableView.dequeueReusableCell(withIdentifier: Cells.graphViewCell) as! GraphViewCell

graphCell.lineChartView.data = track.chartDataForHeight()
return graphCell
}

这里的track是我存储图表数据的变量。

最佳答案

如果您有一个非常复杂的单元格,并且单元格数量不是太多,并且您不想每次都付费创建它,那么不使用 dequeResuableCell 而只是延迟创建单元格并缓存它们是正确的。您可以通过响应 didReceiveMemoryWarning 并转储屏幕外单元格然后延迟重新创建它们来缓解内存问题。 UICollectionView 现在有 prefetching在 ios 10 中。您也可以尝试使用它来代替 UITableView。

关于ios - 提高使用自定义单元格滚动 UITableView 时的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40542226/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com