一个灵活且易于使用的分页框架,灵感来源于 Texture 的批量获取 API。
Pagination
提供了一个易于使用的 API,用于在您的应用程序中实现无限滚动。它允许在任何可滚动视图(无论是 UITableView
、UICollectionView
还是任何其他可滚动容器)中无缝集成分页功能。
使用 Pagination
,您可以轻松地管理应用程序中的分页,方法是自动检测用户何时滚动到当前内容的末尾附近并触发下一页的获取。该框架支持垂直和水平滚动,并且旨在与各种 UI 组件无缝协作。
UIScrollView
、UITableView
和 UICollectionView
集成。vertical
(垂直)和 horizontal
(水平)滚动方向。实现无限滚动非常简单,尤其是在垂直滚动的情况下。设置代理以处理新页面预取请求
collectionView.pagination.delegate = self
实现代理方法以获取新页面的数据
func pagination(_ pagination: Pagination, prefetchNextPageWith context: PaginationContext) {
// Fetch the next page of data from your source
fetchData(forPage: nextPage) { result in
switch result {
case .success(let data):
// Append the new data and update UI.
pagination.isEnabled = nextPage < data.totalPages
context.finish(true)
case .failure:
// Failed to fetch data
context.finish(false)
}
}
}
重要提示
一旦数据加载完成,必须调用 context.finish(_:)
以准确更新分页状态。
要禁用分页,请将 isEnabled
属性设置为 false
。这将停止分页监控可滚动视图
collectionView.pagination.isEnabled = false
对于水平滚动,配置分页以处理水平滚动
collectionView.pagination.direction = .horizontal
要调整预取距离,请将 leadingScreensForPrefetching
属性设置为您期望的值。默认值为 2
个前导屏幕。将其设置为 0
将停止分页通知您有关新数据预取
collectionView.pagination.leadingScreensForPrefetching = 3
注意
Pagination
完全兼容 Objective-C 项目。只需导入模块并使用提供的 API。
self.tableView.pagination.isEnabled = YES;
self.tableView.pagination.direction = PaginationDirectionVertical;
self.tableView.pagination.leadingScreensForPrefetching = 3;
self.tableView.pagination.delegate = self;
查看 Example 目录,了解如何在实际场景中使用 Pagination。
您可以通过将其作为包依赖项添加到 Xcode 项目中,从而将分页添加到 Xcode 项目。
如果您想在 SwiftPM 项目中使用 Pagination,只需将其添加到 Package.swift 中的 dependencies 子句中即可
dependencies: [
.package(url: "https://github.com/grighakobian/swift-pagination", from: "1.0.0")
]
Paginator 在 MIT 许可证下可用。有关更多信息,请参见 LICENSE 文件。