ESPullToRefresh 是一个易于使用的组件,为开发者提供了 下拉刷新 和 无限滚动 的实现。 通过扩展 UIScrollView,您可以轻松地为 UIScrollView 的任何子类添加下拉刷新和无限滚动功能。 如果您想自定义其 UI 样式,只需遵循指定的协议即可。
UIScrollView
及其子类 UICollectionView
UITableView
UITextView
下载并在 Xcode 中运行 ESPullToRefreshExample 项目,以查看 ESPullToRefresh 的实际效果。
pod "ESPullToRefresh"
github "eggswift/pull-to-refresh"
git clone https://github.com/eggswift/pull-to-refresh.git
open ESPullToRefresh
将 ESPullToRefresh
添加到您的项目
import ESPullToRefresh
添加默认下拉刷新
self.tableView.es.addPullToRefresh {
[unowned self] in
/// Do anything you want...
/// ...
/// Stop refresh when your job finished, it will reset refresh footer if completion is true
self.tableView.es.stopPullToRefresh(completion: true)
/// Set ignore footer or not
self.tableView.es.stopPullToRefresh(completion: true, ignoreFooter: false)
}
添加默认无限滚动
self.tableView.es.addInfiniteScrolling {
[unowned self] in
/// Do anything you want...
/// ...
/// If common end
self.tableView.es.stopLoadingMore()
/// If no more data
self.tableView.es.noticeNoMoreData()
}
PS: 加载效果来自美团 iOS 应用程序。
自定义刷新需要遵循 ESRefreshProtocol 和 ESRefreshAnimatorProtocol 协议。
添加自定义下拉刷新
func es.addPullToRefresh(animator animator: protocol<ESRefreshProtocol, ESRefreshAnimatorProtocol>, handler: ESRefreshHandler)
添加自定义无限滚动
func es.addInfiniteScrolling(animator animator: protocol<ESRefreshProtocol, ESRefreshAnimatorProtocol>, handler: ESRefreshHandler)
ESPullToRefresh 支持最新的过期时间和缓存刷新时间,您需要为您的 UIScrollView 设置一个 refreshIdentifier
。
scrollView.refreshIdentifier = "Your Identifier" // Set refresh identifier
scrollView.expriedTimeInterval = 20.0 // Set the expiration interval
您可以使用 es.autoPullToRefresh()
方法,当时间超过上次刷新间隔时,自动刷新。
scrollView.es.autoPullToRefresh()
let expried = scrollView.espried // expired or not
func es.removeRefreshHeader()
func es.removeRefreshFooter()
您可以通过查看我们的赞助页面来支持该项目。只需单击一下
此广告由 GitAds 投放
ESPullToRefresh 由 Vincent Li 开发和维护。 如果您在使用 ESPullToRefresh 时有任何问题或疑问,欢迎提出 issue。
如果您想为 ESPullToRefresh 做出贡献,请提交 Pull Request,我会尽快处理。
MIT 许可证 (MIT)
版权所有 (c) 2013-2020 eggswift
特此授予任何人免费获得本软件及相关文档文件(“软件”)副本的权利,以不受限制地处理软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本的权利,并允许向其提供软件的人员按以下条件这样做
上述版权声明和本许可声明应包含在所有副本或本软件的实质部分中。
本软件按“原样”提供,不提供任何形式的明示或暗示的保证,包括但不限于适销性、适用于特定目的和不侵权的保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论是在合同诉讼、侵权诉讼或其他诉讼中,无论是由于软件或软件的使用或其他交易引起的或与之相关的。