2

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

4

1 回答 1

0

在这种情况下,试着想一些逻辑来计算下一个单元格何时将被绘制。然后显式调用cellForRowAtIndexPath,这样,单元格drawRect将在它出现之前被调用。

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

但我会事先告诉你,这只是一个 hack,不能说它是好的做法。

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

于 2013-10-03T15:50:38.270 回答