博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MJRefresh-Swift版本--JRefresh
阅读量:6276 次
发布时间:2019-06-22

本文共 4775 字,大约阅读时间需要 15 分钟。

JRefresh

介绍

这是MJRefresh的swift版本,先OC原版奉上,JRefresh为纯Swift版本,支持swift3.2以上,iOS8.0以上版本。代码逻辑和MJRefresh基本一模一样,本来一开始打算用swift的面向协议思想改写的,发现行不通只好用原作者一模一样的继承思想翻译成Swift。JRefresh剔除了原有的过期方法,也没有Selector调用方法(不想再混入OC文件,swift不支持objc_msgSend),只剩下闭包调用。

为何写这个

  • 由于项目使用swift语言开发原来越多。但OC和swift混编要桥接文件,编译慢,无法达到纯正的swift第三方效果。(个人洁癖哈,使用pod还好,假如拖入项目的那一大堆.h.m文件实在难受)。可以让只会swift语言的孩子查看源代码哈(虽然这样的孩子不多~)
  • 项目中一直在用MJRefresh,但没有翻译一遍来的理解透彻。
  • 自己学习提高咯。后期可以丰富更多个性化功能~

使用方法

支持swift3.2 以上, iOS版本8.0以上

  • 使用cocoapods

pod JRefresh

  • 下载demo,直接将JRefresh文件夹拖到项目中使用

具体方法

没错,比MJRefresh少了
backFooter,主要是一直没有用到过(一次都没啊~),所以暂时给取消了,假如反应的人多,下个版本就给加上
这些反正和MJRefresh一模一样(就是照着他翻译过来的哈)

效果展示

  • 默认下拉(只有刷新时间、状态)
tableView.header = JRefreshStateHeader.headerWithRefreshingBlock({[weak self] in                guard let `self` = self else {
return} DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 3, execute: { self.count += 2 self.tableView.reloadData() self.tableView.header?.endRefreshing() }) })tableView.header?.beginRefreshing()复制代码

  • 下拉带菊花、箭头
tableView.header = JRefreshNormalHeader.headerWithRefreshingBlock({[weak self] in                guard let `self` = self else {
return} DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 3, execute: { self.count += 2 self.tableView.reloadData() self.tableView.header?.endRefreshing() }) })tableView.header?.beginRefreshing()复制代码

  • GIF 刷新
tableView.header = JChiBaoZiHeader.headerWithRefreshingBlock({[weak self] in                guard let `self` = self else {
return} DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 3, execute: { self.count += 2 self.tableView.reloadData() self.tableView.header?.endRefreshing() }) })tableView.header?.beginRefreshing()复制代码

  • 下拉刷新 自定义文字
let header = JRefreshNormalHeader.headerWithRefreshingBlock({[weak self] in                guard let `self` = self else {
return} DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 3, execute: { self.count += 2 self.tableView.reloadData() self.tableView.header?.endRefreshing() }) }) // 设置文字 (header as! JRefreshNormalHeader).setTitle("lee", .Idle) (header as! JRefreshNormalHeader).setTitle("jiang", .Pulling) (header as! JRefreshNormalHeader).setTitle("bo", .Refreshing) // 设置字体 (header as! JRefreshNormalHeader).stateLabel.font = UIFont.systemFont(ofSize: 16) (header as! JRefreshNormalHeader).lastUpdatedTimeLabel.font = UIFont.systemFont(ofSize: 14) // 设置颜色 (header as! JRefreshNormalHeader).stateLabel.textColor = UIColor.red (header as! JRefreshNormalHeader).lastUpdatedTimeLabel.textColor = UIColor.blue header.beginRefreshing() tableView.header = header复制代码

  • 上拉带loading
tableView.footer = JRefreshAutoNormalFooter.footerWithRefreshingBlock({[weak self] in                guard let `self` = self else {
return} DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 3, execute: { self.count += 2 self.tableView.reloadData() self.tableView.footer?.endRefreshing() }) })复制代码

  • 上拉Gif(无文字状态)
tableView.footer = JChiBaoZiFooter.footerWithRefreshingBlock({[weak self] in                guard let `self` = self else {
return} DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 3, execute: { self.count += 5 self.tableView.reloadData() self.tableView.footer?.endRefreshing() if self.count >= 40 { self.tableView.footer?.endRefreshingWithNoMoreData() } }) }) (tableView.footer as? JRefreshAutoGifFooter)?.refreshingTitleHidden = true复制代码

  • 自定义上拉视图
tableView.footer = JDIYAutoFooter.footerWithRefreshingBlock({[weak self] in                guard let `self` = self else {
return} DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 3, execute: { self.count += 5 self.tableView.reloadData() self.tableView.footer?.endRefreshing() if self.count >= 40 { self.tableView.footer?.endRefreshingWithNoMoreData() } }) })复制代码

  • 更多demo

欢迎使用,有任何bug,希望给我提Issues~

转载于:https://juejin.im/post/5b7fadd8e51d4538b63d18fc

你可能感兴趣的文章
几个常用的ASP木马
查看>>
python分析postfix邮件日志的状态
查看>>
Mysql-5.6.x多实例配置
查看>>
psutil
查看>>
在git@osc上托管自己的代码
查看>>
机器学习算法:朴素贝叶斯
查看>>
小五思科技术学习笔记之扩展访问列表
查看>>
使用Python脚本检验文件系统数据完整性
查看>>
使用MDT部署Windows Server 2003 R2
查看>>
Redhat as5安装Mysql5.0.28
查看>>
通过TMG发布ActiveSync
查看>>
Web服务器的配置与管理(4) 配置访问权限和安全
查看>>
爆牙齿的Web标准面试考题II(iPhone SMS/iChat UI的Web标准实现)
查看>>
XMOVE3.0手持终端——软件介绍(二):在2KB内存的单片机上实现的彩屏GUI控件库
查看>>
MVC系列——MVC源码学习:打造自己的MVC框架(三:自定义路由规则)
查看>>
找小于N 的所有质数
查看>>
Windows下的Jupyter Notebook 的介绍(写给新手)(图文详解)
查看>>
iOS开发-CocoaPods实战
查看>>
JS组件系列——Bootstrap 树控件使用经验分享
查看>>
HTML-color:rgb()-颜色渐进
查看>>