Refreshable
Refreshable是一个组件,为UIScrollView提供下拉刷新和上拉加载更多(无限滚动)功能。通过扩展UIScrollView,您可以轻松地为UIScrollView的任何子类添加功能。Refreshable是为了您能够轻松自定义其UI风格而开发的。
要求
- Xcode 9或更高版本
- iOS 9.0或更高版本
- ARC
- Swift 4.0或更高版本
特性
- 支持
UIScrollView
及其子类UICollectionView
、UITableView
、UITextView
- 下拉刷新,上拉加载更多
- 支持自定义您的样式
入门
CocoaPods
使用CocoaPods安装,在Podfile中添加以下内容:
platform :ios, '9.0'
use_frameworks!
pod 'Refreshable'
Swift Package Manager
用 Swift Package Manager 安装,只需在你的 Package.swift
文件中添加以下内容
dependencies: [
.package(url: "https://github.com/hoangtaiki/Refreshable", from: "1.0.0"),
],
Submodules
或手动检出 submodules,使用 git submodule add [email protected]:hoangtaiki/Refreshable.git
,将 Refreshable.xcodeproj 拖到你的项目中,并将 Refreshable 添加为构建依赖项。
使用方法
添加下拉刷新
使用下拉刷新功能最简单的方法是使用我们提供的默认样式。
tableView.addPullToRefresh(action: { [weak self] in
DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
self?.tableView.stopPullToRefresh()
}
})
如果您想自定义 UI,只需要遵循 PullToRefreshDelegate
协议。您可以参考我们实现的 TextLoadingAnimator
。
添加加载更多
tableView.addLoadMore(action: { [weak self] in
DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
self?.tableView.stopLoadMore()
}
})
我们支持在数据不足时禁用“加载更多”功能。
tableView.setLoadMoreEnable(false)
配合 RxSwift 使用
我是一个响应式编程的粉丝,我在我的项目中使用 RxSwift。如果您想与 RxSwift 一起使用 Refreshable
,创建一个名为 Refreshable+Rx.swift
的新文件,然后将以下代码复制到该文件中。
import RxSwift
import RxCocoa
import Refreshable
extension Reactive where Base: UIScrollView {
public var refreshing: Binder<Bool> {
return Binder(base) { scrollView, isShow in
if isShow {
scrollView.startPullToRefresh()
} else {
scrollView.stopPullToRefresh()
}
}
}
public var loadingMore: Binder<Bool> {
return Binder(base) { scrollView, isShow in
if isShow {
scrollView.startLoadMore()
} else {
scrollView.stopLoadMore()
}
}
}
}
贡献
我们很高兴你对 Refreshable 感兴趣,并希望看到你如何使用它。如果您有任何建议或错误报告,请随意发送 pull request 或创建新的 issue。
谢谢,希望你享受这个项目!