我已经开发了一个tvOS应用程序,该应用程序在CollectionView
内部呈现了CollectionView
。第一个CollectionView
的每个部分只有一个元素,我们称它为RowCell
,而这个元素包含第二个CollectionView
,它具有给定类别的许多单元格。
我遇到的问题是:
当我在.reloadData()
(包含按类别分隔的单元格的行)的prepareForReuse
方法中使用RowCell
时,上下滚动时加载速度非常慢。而且,如果我不为.reloadData()
使用RowCell
,则数据总是会呈现错误。
关于如何使用.reloadData()
并且不降低滚动/渲染速度的任何想法。
谢谢。
答案 0 :(得分:1)
有两个简单的问题。首先,每个单元都从Internet上加载沉重的图像,因此我要求在API中使用质量较低的替代方案,其次是这些图像未保存在Cache中,因此我必须在每个用户滚动中都这样做。通过实施这两种解决方案,所有问题都消除了。
答案 1 :(得分:0)
似乎,如果您有很多类别,那么您在做很多reloadData()
。如果内部集合视图的单元格需要重做,尽管存在单元重用的情况,那就更糟了。为了减轻这种情况,您可能需要看一下Prefetching Collection View Data,在这里您可以预取所需的数据,并在单元格实际显示之前对其进行异步工作。
此外,如果可能的话,我建议您看一下IGListKit,这是Instagram开发的第三方库,声称是构建flexible
和fast
的工具列表。我自己使用了IGListKit,确实,它是创建所需的集合视图的一个非常好的选择。问题在于它的学习曲线可能很陡。
希望这会有所帮助!