MJRefresh-Swift版本--JRefresh

作者: 达摩君 | 来源:发表于2018-08-24 14:57 被阅读317次

JRefresh

介绍

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

为何写这个

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

使用方法

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

  • 使用cocoapods

pod JRefresh

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

具体方法

总架构.png
没错,比MJRefresh少了backFooter,主要是一直没有用到过(一次都没啊~),所以暂时给取消了,假如反应的人多,下个版本就给加上
文件目录.png
这些反正和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()
默认下拉(只有刷新时间、状态).gif
  • 默认下拉带⭕️动画
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 as? JRefreshNormalHeader)?.arrowViewNeedCircle = true
                tableView.header?.beginRefreshing()
1.gif
  • 下拉带菊花、箭头
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
  • 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()
GIF 刷新.gif
  • 下拉刷新 自定义文字
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
下拉刷新 自定义文字.gif
  • 上拉带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()
                })
            })
上拉带loading.gif
  • 上拉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
上拉Gif(无文字状态).gif
  • 自定义上拉视图
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()
                    }
                })
            })
自定义上拉视图.gif
  • 更多demo


    更多demo.png

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

相关文章

  • MJRefresh-Swift版本--JRefresh

    JRefresh 介绍 这是MJRefresh的swift版本,先OC原版奉上MJRefresh,JRefresh...

  • 【版本】1【版本】

    【版本】1【版本】 【下载链接】www.9258km.999km.cn

  • iOS版本、iPhone版本、Xcode版本比对

    下面的链接,方便以后好看。 iOS版本、iPhone版本、Xcode版本比对

  • 4、版本

    预览版本体验版本开发版本审核版本线上版本

  • 版本

    这一天,戊戌年五月二十日。 上午骄阳似火,汗如雨下;中午忽然黑云压城,狂风大作,暴雨如注;半下午雨...

  • 版本

    【20180620】

  • 版本

    关于我 有很多版本—— 是流浪的乞人 是丢失的公主 是前朝的贵妃 是寂寞的皇后 是天使 是魔鬼 是妖也是佛 是无所...

  • 版本

    2018.11.19V1.0发布,具备基本的工资条邮箱群发功能!

  • 版本

    源码流程 使用 这里列举了三种常用的版本方式 settings.py urls.py views.py 全局使用

  • 版本

    当前版本 3.2 嗯,就这样

网友评论

    本文标题:MJRefresh-Swift版本--JRefresh

    本文链接:https://www.haomeiwen.com/subject/dmwbiftx.html