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