我有一个collectionView和我用Alamofire从api获取数据(我有PHP(Laravel)后端)。我创建了一个类似Twitter的时间轴,当我使用pull刷新刷新其重新加载所有数据时,但是它没有用,因为如果有人通过刷新刷新,它们将每次滚动到顶部。
我希望他们保持当前滚动位置,并且新项目会添加到顶部,并且当他们向顶部滚动时,他们将继续阅读Twitter之类的帖子。希望您能理解我的意思。我研究了它,但是找不到任何类似的问题,我认为是因为我不知道该如何描述。
供审核的API:https://gasome.com/api/post
我正在使用KafkaRefresh Pod进行拉动刷新
self.mCollectionView.bindHeadRefreshHandler({
self.id.removeAll(keepingCapacity: false)
self.loadPosts()
}, themeColor: UIColor.blue, refreshStyle: .native)
最佳答案
您要使用UICollectionView的performBatchUpdates(_:completion:)
函数。有一些关于如何使用它的教程,我建议您也使用像https://github.com/wokalski/Diff.swift这样的差异算法。
阅读您的评论后...这是一个很大的问题。这不是一件容易的事。每次用户滚动并存储时,您都需要跟踪集合视图的内容偏移量。然后,每当用户将屏幕移到前台时,您都必须下载最新数据,在存储的内容偏移量中添加一个值,以获取新数据已添加到屏幕顶部的点数,然后设置集合查看偏移到该值的内容。
您可能找不到示例代码来演示如何执行此操作,因为这是公司为拥有经验丰富的开发人员设置而付出的高昂代价。
关于ios - 我想像推特一样在顶部添加新项目,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52786139/