来自Leo的原创博客,转载请著名出处
我的StackOverflow
我的Github
https://github.com/LeoMobileDeveloper
效果
淘宝
大众点评
项目地址
其中
- 大众点评的下拉刷新用了50行左右代码
- 淘宝的下拉刷新用了90行左右代码
完整的代码地址:PullToRefreshKit
Tips:用Swift 2.2写的,所以需要XCode 7.3来运行。
PullToRefreshKit
这是我用纯Swift 2.2写的一个库,初衷是为了更简单的实现自定义下拉刷新。当然,它也支持一代码实现:上拉加载,左/右滑动加载更多的操作。
比如,用一行代码实现默认的下拉刷新
self.tableView.setUpHeaderRefresh { [weak self] in
delay(1.5, closure: {
self?.tableView.endHeaderRefreshing(.Success)
})
}
效果
不过,这个库的主要目的还是希望大家能方便的实现自定义刷新界面,不管是哪个方向的。
通过它来自定义刷新界面,只需要实现三个协议中的一个。
比如,实现自定义下拉刷新,只需写一个UIView的子类,要遵循协议RefreshableHeader。这个UIView的子类,你可以用AutoLayout,任何你想要使用的布局效果。
这个协议有如下几个方法
//拖拽的触发刷新的距离,也是Header的高度
func distanceToRefresh()->CGFloat
//拖拽或者释放的时候,比例的变化。比如总高度是100,当拖拽为10的时候,比例就是0.1,在这里,可以根据百分比动态的设置Header的状态
func percentUpdateWhenNotRefreshing(percent:CGFloat)
//松手即将进入刷新状态的回调,在这里,把视图切换为动画状态
func releaseWithRefreshingState()
//刷新结束,将要开始隐藏Header的动画,在这里告诉用户刷新失败或者成功
func didBeginEndRefershingAnimation(result:RefreshResult)
//刷新结束,Header完全隐藏的回调,这里把Header恢复到最初的状态
func didCompleteEndRefershingAnimation(result:RefreshResult)
大众点评下拉刷新
分析一下,大众点评的下拉刷新主要分为两个状态
- 下拉的过程中,根据下拉程度,动态调整显