Refreshable 1.3.0

Refreshable 1.3.0

Hoangtaki 维护。



  • Harry Tran

Refreshable

Version License Platform Language Build Status

Refreshable是一个组件,为UIScrollView提供下拉刷新和上拉加载更多(无限滚动)功能。通过扩展UIScrollView,您可以轻松地为UIScrollView的任何子类添加功能。Refreshable是为了您能够轻松自定义其UI风格而开发的。

要求

  • Xcode 9或更高版本
  • iOS 9.0或更高版本
  • ARC
  • Swift 4.0或更高版本

特性

  • 支持UIScrollView及其子类UICollectionViewUITableViewUITextView
  • 下拉刷新,上拉加载更多
  • 支持自定义您的样式

入门

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。

谢谢,希望你享受这个项目!