将单元格滚动到视图中时,UITableView滞后

时间:2015-02-22 21:39:12

标签: ios objective-c xcode uitableview swift

我有一个应用程序,它使用UITableView来布局卡式UI,其中每个单元格都是一张卡片。这意味着每张卡都有很多子视图,并且可以在屏幕上绘制很多。使用表格视图意味着如果用户添加了大量的卡片,我就不必管理缓存和内存。

问题在于,当用户将新卡片滚动到屏幕上时,由于它在绘制新卡片时跳过某些帧,因此会出现明显的延迟。

我已经执行了优化,例如我已将绘图代码缩小到一个小尺寸,因此不会不必要地调用方法。我无法解决的问题是 - 视图需要绘制到主线程的屏幕上。所以我有点担心我能做些什么来不让它落后。

1 个答案:

答案 0 :(得分:1)

如果您正在滚动(这会影响UIButton UIImageView和内部使用UIImage的任何内容),并且为每个单元格创建按钮等元素,那么UIImage调整大小是很昂贵的。但即使你有正确尺寸的图像,如果细胞非常复杂,也会重复使用其他元素。因此,在我看来,你可以避免这种情况的唯一方法是将事情转移到后台线程,你应该看看AsyncDisplayKit一个框架来处理这种情况,并在几乎任何情况下提供一个非常流畅的滚动。