当 numberOfRows 返回大量时,UITableView 需要更长的时间来加载



为什么当行数很大时,UITableView需要更多时间来加载? 在viewDidLoad和第一个cellForRowAtIndexPath函数调用之间需要什么时间?

以下是 numberOfRows 返回 100,000 时的日志语句(请注意时间(5 秒延迟)):

2014-02-05 20:51:22.806 TableViewTest[3995:60b] View Did Load
2014-02-05 20:51:27.526 TableViewTest[3995:60b] Cell for row at indexpath.row: 0

以下是 numberOfRows 返回 10,000 时的日志语句(注意时间(1 秒延迟)):

2014-02-05 20:54:50.793 TableViewTest[4007:60b] View Did Load
2014-02-05 20:54:51.846 TableViewTest[4007:60b] Cell for row at indexpath.row: 0

如果您在表格视图中实现heightForRowAtIndexPath:,那么iOS将检查每个单元格的高度,我认为绘制滚动条。因此,如果可能的话,非常快速地拨打电话是值得的。

如果您支持 iOS 7,请考虑实现tableView: estimatedHeightForRowAtIndexPath:它可以返回一个常量(或者可能是非常快速的逻辑)来猜测高度。这将延迟调用heightForRowAtIndexPath:直到实际查看单元格之前,并且应该会大大加快速度。

最新更新