UITableView:渲染的单元格数

时间:2013-10-03 15:21:55

标签: ios uitableview

我设计了UITableView,它显示大高度的自定义单元格(高度几乎等于屏幕的高度)。现在我得到了以下行为:下一行仅在tableview停止滚动时开始呈现(我可以看到它正好在那一刻调用cellForRowAtIndexPath)。它会导致空白屏幕片刻,这非常烦人。 TableCell初始化不需要任何东西(~0.0000002s),所以它不是一个问题。现在的问题是:有没有办法强制UITableView渲染一些不可见的单元格?说,还有5个。

1 个答案:

答案 0 :(得分:0)

在这种情况下,尝试考虑一些逻辑来计算下一个单元格即将被绘制的时间。然后明确地调用cellForRowAtIndexPath,这样,单元格drawRect将在它出现之前被调用。

一种选择是在[yourTableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:indexPath.row + 1 inSection:indexPath.section]内为tableView调用scrollViewDidScroll。使用visibleCells将是一个不错的选择。 indexPath.row和indexPath.section可以来自您声明的NSIndexPath对象,并在cellForRowAtIndexPath中设置。

但我会事先告诉你,这只是一个黑客,不能说这是一个好习惯。

编辑:您可以在每次显式调用CGFloat时将cellForRowAtIndexPath设置为当前表偏移量,并在表格滚动时将此值与当前偏移量进行比较。如果您当前的偏移量即将达到此值+ cellHeight(如果未存储,则显式地使用heightForRowAtIndexPath获取单元格高度),然后调用cellForRowAtIndexPath