ios - 我想将新项目添加到顶部,例如 Twitter

标签 ios swift uicollectionview

我有一个 collectionView,我使用 Alamofire 从 api 获取数据(我有 PHP(Laravel) 后端)。我制作了一个像 Twitter 一样的时间线,当我使用拉动刷新它时,它会重新加载所有数据,但它没有用,因为如果有人拉动刷新,他们每次都会滚动到顶部。

我希望他们保持当前的滚动位置,新项目将添加到顶部,当他们滚动到顶部时,他们将继续阅读 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:) 函数。有一些关于如何使用它的教程,我建议您使用 diff 算法,如 https://github.com/wokalski/Diff.swift也是。

<小时/>

读完你的评论后...这是一个很大的问题。这不是一件小事。每次用户滚动并存储它时,您都需要跟踪 Collection View 的内容偏移量。然后,每当用户将屏幕带到前台时,您都必须下载最新的数据,为存储的内容偏移量添加一个值,以表示新数据已添加到屏幕顶部的点数,然后设置 Collection View 内容偏移到该值。

您可能找不到示例代码来向您展示如何执行此操作,因为公司需要花费大量资金才能拥有经验丰富的开发人员设置。

关于ios - 我想将新项目添加到顶部,例如 Twitter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52786139/

相关文章:

swift - UITextfield 在 UICollectionView reloadData() 之后成为FirstResponder

ios - 在 Swift 中打乱字符串

ios - 通过 FTP 协议(protocol)从 iPhone 上传/下载文件

iOS MPMusicPlayerController 歌曲更改通知没有歌曲对象

ios - CloudKit - NSPredicate 用于在引用列表中查找包含多个 CKReferences 的所有记录

ios - 如何滚动到 UITableView 或 UICollectionView 中的最后一个单元格之外

iphone - 在突出显示时更改 UIButton 边框颜色

ios - 应用程序运行时 Delphi Apple 推送通知

swift - Swift 中实例属性的只读访问

ios - UICollectionView 太宽了。我怎样才能使它成为设备的宽度?