ESPullToRefresh
ESPullToRefresh是一个非常易于开发者使用的下拉刷新和加载更多组件。通过一个UIScrollView的扩展,可以轻松为UIScrollView的所有子类添加下拉刷新功能。 如果你想定制组件的UI样式,只要实现指定的协议方法即可。 Github地址
如何安装
使用CocoaPods
pod "ESPullToRefresh"
手动安装
git clone https://github.com/eggswift/pull-to-refresh.git
open ESPullToRefresh
开始使用
使用默认样式 效果如下:
![](https://img.haomeiwen.com/i1961747/c1ef4b54928148b9.gif)
设置默认下拉刷新组件
self.tableView.es_addPullToRefresh {
[weak self] in
/// 在这里做刷新相关事件
/// ...
/// 如果你的刷新事件成功,设置completion自动重置footer的状态
self?.tableView.es_stopPullToRefresh(completion: true)
/// 设置ignoreFooter来处理不需要显示footer的情况
self?.tableView.es_stopPullToRefresh(completion: true, ignoreFooter: false)
})
}
设置默认加载更多组件
self.tableView.es_addInfiniteScrolling {
[weak self] in
/// 在这里做加载更多相关事件
/// ...
/// 如果你的加载更多事件成功,调用es_stopLoadingMore()重置footer状态
self?.tableView.es_stopLoadingMore()
/// 通过es_noticeNoMoreData()设置footer暂无数据状态
self?.tableView.es_noticeNoMoreData()
})
}
使用自定义样式 效果如下:
![](https://img.haomeiwen.com/i1961747/3cca4c10d23d5587.gif)
注: 加载动画资源来自美团 iOS app。
![](https://img.haomeiwen.com/i1961747/cb831874f3097826.gif)
ESPullToRefresh
通过ESRefreshProtocol
和ESRefreshAnimatorProtocol
来约束刷新组件的使用,自定义的组件必须遵守这两个协议,并实现协议中的方法。
设置自定义下拉刷新组件
func es_addPullToRefresh(animator animator: protocol<ESRefreshProtocol, ESRefreshAnimatorProtocol>,
handler: ESRefreshHandler)
设置自定义加载更多组件
func es_addInfiniteScrolling(animator animator: protocol<ESRefreshProtocol, ESRefreshAnimatorProtocol>,
handler: ESRefreshHandler)
移除方法
func es_removeRefreshHeader()
func es_removeRefreshFooter()
如果在使用中有什么疑问,可以随时@我
网友评论
不明白为什么会调用后者
但是不知道为什么, 下拉加载这个方法调用不到, 但是上拉刷新是好的
1、当使用您默认的样式的时候 我不能去修改 pullToRefreshDescription releaseToRefreshDescription loadingDescription 这三者的文字 只能在您内部去修改
2、不知道您有没有发现 每次刷新完成之后 您都会把它更改为pullToRefreshDescription所显示的内容 如果按中文来着的话 就没有 "加载完成" 这一说了
2、目前的确有这样一个问题存在~ 我个人觉得既然是加载更多的话,就不需要有加载完成的state,直接insert ui就好了~