我正在使用UICollectionView实现聊天应用。最初我只获取100条消息。当用户滚动时,我会获取更多消息,然后重新加载集合视图。为了保持滚动位置,我设置内容偏移但滚动停止。如何在重新加载UICollectionView之后保持滚动速度,这样用户就不会感觉到混蛋?
答案 0 :(得分:0)
您可以尝试使用iOS10中引入的prefetchDataSource。
答案 1 :(得分:0)
有几种方法可以解决这个问题。
您不使用reloadData()
而是使用insertItemsAtIndexPaths:
,这样您就无法重建整个表格,只会构建所需的项目。
当使用点击集合视图的特定点时,您会加载其他数据。在willDisplayCell
方法中,您可以检查单元格的indexPath
是否接近数据源中的最后一个索引并加载其他行。用户将滚动到最后一项,所有内容都已存在,所以您不必担心。
根据我的经验,最好的方法是结合使用这两种方法。因为一般情况下,根据您的单元格布局,偶尔使用reloadData()
可能会非常有用。