原理:
无论是下拉刷新还是上拉加载更多,原理都是在内容 (tableview.addSubview :下拉刷新,tableview.tableFooterView:上拉加载更多),不能下拉或者上划时响应用户的触摸事件,在顶部或者底部显示一个刷新视图,在程序刷新操作完成后再隐藏掉。
以上内容仅供个人学习;
动画简单实现
- 普通状态 -->显示默认状态图片,
2.下拉状态--->计算下拉过度点,及其范围点-->进行图片缩放
3.刷新状态-->隐藏默认状态,显示动画
- 当用户拖动tableView 而且没有松手
- 当contentOffset.y > 过度值 显示正常 且当前状态为下拉中
- 当contentOffset.y <= 过度值 下拉中 且当前的状态为正常
- 当用户拖动tableView 而且松手了
- 如果当前的状态为 下拉中 -->刷新中
- 如果用户松手了 而且当前的状态为下拉中 才能进入刷新中
难点: 获取当前下拉的偏移量 contentOffset.y -->进行操作
// 得到scrollView 的变化
override func observeValueForKeyPath(keyPath: String?, ofObject object: AnyObject?, change: [String : AnyObject]?, context: UnsafeMutablePointer<Void>) {
getSHRefreshControlState(self.scrollView!.contentOffset.y)
}
各位可根据自己的需求进行更新修改
Demo下载地址:https://github.com/baiGenZhengliu/SwiftDemo.git