滚动滞后&当UITableView变大时滚动条跳跃

时间:2012-07-13 03:09:34

标签: ios uitableview uiscrollview

正如标题所说,我正在使用一个UITableView,它连接到由ViewController调解的FetchedResultsController。

当用户滚动靠近网格底部并且我们获取更多数据以显示给用户时,会发生延迟。当收到数据,并且tableview的内容变大时,滚动暂停,然后暂停,然后滚动条跳得更高,最后一切顺利退出。 这发生在:

-(void)controllerDidChangeContent:(FetchedResultsController *)controller {
    [tableView reloadData];
}

我已经完成了所有优化,我已经找到了淘到Apple的底座和SO。

  1. 我应该重用视图。这对性能的影响最大。初学者的细胞几乎不会被击中。

  2. 在使用imageview之前解码背景线程中的图像(在上下文中绘图)。 (注意口吃是在我们甚至得到图像来替换细胞的“加载”ui之前发生的。)

  3. 极短且快速的委托方法。

  4. 不透明的手绘视图。

  5. 有没有人有任何关于处理UITableView的行添加的建议,这些建议不会阻止UI线程并阻止滚动条跳转?我尝试过使用[tableView insertRows ...],但发生了同样的口吃和滚动条跳跃,我觉得这很奇怪。

    干杯, ZED

1 个答案:

答案 0 :(得分:0)

这对于UITableView来说实际上是很自然的。不幸的是,它并不优雅。如果您的应用不断检索数据并重新加载,那么这也会影响您的效果。我甚至测试了你的理论,并使用NSMutableArray手动填充了UITableView。我给了数组几个值,这甚至足以使它滞后。 (请记住,没有涉及额外的方法,甚至没有涉及reloadData。只是基本的委托方法。)

相关问题