PullToRefreshKit 0.8.8

PullToRefreshKit 0.8.8

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布最新版本2018年10月
支持 SPM支持 SPM

LeoMobileDeveloper 维护。



  • Leo

PullToRefreshKit

Apps Using Downloads Version Platform Language License

示例项目中包含了一些热门 App 刷新示例。

淘宝 优酷 QQ 视频
Yahoo 天气 大众点评 QQ

要求

  • 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文件。