示例项目中包含了一些热门 App 刷新示例。
淘宝 | 优酷 | QQ 视频 |
---|---|---|
Yahoo 天气 | 大众点评 | |
要求
- iOS 8
- Swift 4+
- XCode 9+
对于 Swift 3,请参阅分支 Swift3
支持
UITableView/UICollectionView/UIScrollView/UIWebView
- 下拉刷新。
- 下拉/点击加载更多。
- 左右滑动加载更多(目前仅支持中文)
- 弹性刷新
- 易于自定义
- 英文和中文
安装
CocoaPod
pod "PullToRefreshKit"
Carthage
github "LeoMobileDeveloper/PullToRefreshKit"
使用方法
什么是容器?容器是持有 scrollView 参考的对象,通常是 UIViewController 对象。
下拉刷新
self.tableView.configRefreshHeader(container:self) { [weak self] in
delay(2, closure: {
self?.tableView.switchRefreshHeader(to: .normal(.success, 0.5))
})
}
如果您希望没有延迟
self.tableView.switchRefreshHeader(to: .normal(.none, 0.0))
上拉加载更多
支持三种模式触发刷新动作
- 点击
- 滑动
- 滑动和点击
self.tableView.configRefreshFooter(container:self) { [weak self] in
delay(1.5, closure: {
self?.tableView.switchRefreshFooter(to: .normal)
})
};
移除页脚
self.tableView.switchRefreshFooter(to: .removed)
没有更多数据
self.tableView.switchRefreshFooter(to: .noMoreData)
左滑退出
scrollView.configSideRefresh(with: DefaultRefreshLeft.left(), container:self, at: .left) {
self.navigationController?.popViewController(animated: true)
};
右滑弹出
let right = DefaultRefreshRight.right()
right.setText("👈滑动关闭", mode: .scrollToAction)
right.setText("松开关闭", mode: .releaseToAction)
right.textLabel.textColor = UIColor.orange
scrollView.configSideRefresh(with: right, container:self, at: .right) { [weak self] in
self?.navigationController?.popViewController(animated: true)
};
配置默认刷新文本
PullToRefershKit提供SetUp
操作符,例如
let header = DefaultRefreshHeader.header()
header.setText("Pull to refresh", mode: .pullToRefresh)
header.setText("Release to refresh", mode: .releaseToRefresh)
header.setText("Success", mode: .refreshSuccess)
header.setText("Refreshing...", mode: .refreshing)
header.setText("Failed", mode: .refreshFailure)
header.tintColor = UIColor.orange
header.imageRenderingWithTintColor = true
header.durationWhenHide = 0.4
self.tableView.configRefreshHeader(with: header,container:self) { [weak self] in
delay(1.5, closure: {
self?.models = (self?.models.map({_ in random100()}))!
self?.tableView.reloadData()
self?.tableView.switchRefreshHeader(to: .normal(.success, 0.3))
})
};
自定义
您只需编写一个UIView
子类,并使其遵循这些协议
RefreshableHeader
RefreshableFooter
RefreshableLeftRight
例如,创建一个自定义页眉
//Height of the refresh header
func heightForHeader()->CGFloat
//Distance from top when in refreshing state
func heightForRefreshingState()->CGFloat
//Will enter refreshing state,change view state to refreshing in this function
func didBeginrefreshingState()
//The refreshing task is end.Refresh header will hide.Tell user the refreshing result here.
func didBeginHideAnimation(result:RefreshResult)
//Refresh header is hidden,reset all to inital state here
func didCompleteHideAnimation(result:RefreshResult)
//Distance to drag to fire refresh action ,default is heightForRefreshingState
optional func heightForFireRefreshing()->CGFloat
//Percent change during scrolling
optional func percentUpdateDuringScrolling(percent:CGFloat)
//Duration of header hide animation
optional func durationOfHideAnimation()->Double
作者
Leo, [电子邮件地址被遮挡]
许可证
PullToRefreshKit遵守MIT许可证。有关更多信息,请参阅LICENSE文件。