如何在tvOS中加速UICollectionView单元格渲染

时间:2019-01-20 21:07:47

标签: ios swift tvos tvml

我已经开发了一个tvOS应用程序,该应用程序在CollectionView内部呈现了CollectionView。第一个CollectionView的每个部分只有一个元素,我们称它为RowCell,而这个元素包含第二个CollectionView,它具有给定类别的许多单元格。

我遇到的问题是: 当我在.reloadData()(包含按类别分隔的单元格的行)的prepareForReuse方法中使用RowCell时,上下滚动时加载速度非常慢。而且,如果我不为.reloadData()使用RowCell,则数据总是会呈现错误。

关于如何使用.reloadData()并且不降低滚动/渲染速度的任何想法。

谢谢。

2 个答案:

答案 0 :(得分:1)

有两个简单的问题。首先,每个单元都从Internet上加载沉重的图像,因此我要求在API中使用质量较低的替代方案,其次是这些图像未保存在Cache中,因此我必须在每个用户滚动中都这样做。通过实施这两种解决方案,所有问题都消除了。

答案 1 :(得分:0)

似乎,如果您有很多类别,那么您在做很多reloadData()。如果内部集合视图的单元格需要重做,尽管存在单元重用的情况,那就更糟了。为了减轻这种情况,您可能需要看一下Prefetching Collection View Data,在这里您可以预取所需的数据,并在单元格实际显示之前对其进行异步工作。

此外,如果可能的话,我建议您看一下IGListKit,这是Instagram开发的第三方库,声称是构建flexiblefast的工具列表。我自己使用了IGListKit,确实,它是创建所需的集合视图的一个非常好的选择。问题在于它的学习曲线可能很陡。

希望这会有所帮助!