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