RxPullToRefresh 0.1.1

RxPullToRefresh 0.1.1

Gumob 开发者Kojiro Futamura维护。



 
依赖项
RxSwift~> 4.0
RxCocoa~> 4.0
 

  • 作者:
  • gumob

Carthage compatible Version Platform Build Status codecov Reviewed by Hound Language Packagist

RxPullToRefresh

一个 Swift 库,允许您创建一个灵活可定制的支持 RxSwift 的下拉刷新视图。

drawing

特性

  • 支持 UIScrollView、UITableView 和 UICollectionView
  • 可自定义的刷新视图
  • 可自定义的动画选项
  • 配置选项以在拖动时加载数据或在用户松开手指后加载数据
  • 错误处理
  • 支持 RxSwift/RxCocoa

要求

  • iOS 9.0 或更高版本
  • Swift 4.2

安装

Carthage

将以下内容添加到您的 Cartfile 中,并按照 这些说明 操作。

github "gumob/RxPullToRefresh"

请勿忘记包括 RxSwift.framework 和 RxCocoa.framework。否则构建应用会失败。

drawing

CocoaPods

要将 RxPullToRefresh 集成到您的项目中,请将以下内容添加到您的 Podfile

platform :ios, '9.3'
use_frameworks!

pod 'RxPullToRefresh'

使用方法

请阅读 API 参考USAGE.md 以获取详细信息。

基本使用

将框架导入到项目中

import RxSwift
import RxCocoa
import RxPullToRefresh

添加 RxPullToRefresh

创建一个 RxPullToRefresh 对象。

// Create a RxPullToRefresh object
self.topPullToRefresh = RxPullToRefresh(position: .top)
// Add a RxPullToRefresh object to UITableView
self.tableView.p2r.addPullToRefresh(self.topPullToRefresh)

观察 RxPullToRefreshDelegate

通过观察 RxPullToRefreshDelegate,您可以监视 RxPullToRefresh 对象的状态。每当其 状态 或滚动速率发生变化时,RxPullToRefresh 对象都会调用此委托。

// Observe RxPullToRefreshDelegate
self.topPullToRefresh.rx.action
        .subscribe(onNext: { [weak self] (state: RxPullToRefreshState, progress: CGFloat, scroll: CGFloat) in
            // Send request if RxPullToRefreshState is changed to .loading
            switch state {
            case .loading: self?.prepend()
            default:       break
            }
        })
        .disposed(by: self.disposeBag)

加载和追加内容

self.viewModel.prepend()
              .subscribe(onSuccess: { [weak self] in
                  // Successfully loaded, collapse refresh view immediately
                  self?.tableView.p2r.endRefreshing(at: .top)
              }, onError: { [weak self] (_: Error) in
                  // Failed to load, show error
                  self?.tableView.p2r.failRefreshing(at: .top)
              })
              .disposed(by: self.disposeBag)

通过绑定布尔值到 canLoadMore 属性禁用刷新功能

self.viewModel.canPrepend
        .asDriver()
        .drive(self.topPullToRefresh.rx.canLoadMore)
        .disposed(by: self.disposeBag)

销毁 RxPullToRefresh 对象

override func viewDidDisappear(_ animated: Bool) {
    super.viewDidDisappear(animated)
    self.tableView.p2r.endAllRefreshing()
    self.tableView.p2r.removeAllPullToRefresh()
}

高级使用

关于示例项目

RxPullToRefresh 允许您通过继承 RxPullToRefreshRxPullToRefreshView 类来自定义刷新视图。请查看示例代码了解高级使用方法。

构建示例应用

  1. 更新 Carthage 框架
$ carthage update --platform iOS
  1. 打开 RxPullToRefresh.xcodeproj
  2. 从 Xcode 窗口左上角的下拉菜单中选择方案 RxPullToRefreshExample
  3. 按 ⌘R

版权

RxPullToRefresh 根据 MIT 许可证发布,这意味着您可以修改它、重新分发它或以您喜欢的任何方式使用它。