美文网首页
MJRefresh简单分析

MJRefresh简单分析

作者: limbo_lyn | 来源:发表于2020-01-19 17:19 被阅读0次

1. 使用说明

tableView.mj_header = NGAnimationRefreshHeaderView(refreshingBlock: {

    weakself?.loadData()

})

2.基本原理讲解

首先我们先来看两张图

通过这两张图,我们大致的梳理下MJ的原理。MJ的Header和Footer并不是直接加在UIScrollview(及其子类,本文UITableView和UICollectionView都不再单独提起,直接UIScrollview说明,原理是一样的),而是加在contentInset中的,因此需要使用MJ的时候必须要保证alwaysBounceVertical为True,否则无效。

我们在使用时,直接设置Header和Footer就可以使用,因为设置时调用setter方法,MJ已经在内部通过这个方法为我们处理好了所有的流程。不得不说,这个控件封装的的确是太厉害了。

3.流程图说

其中WillRefresh和NoMoreData这两个状态没有在流程图中提及。

WillRefresh 是在当前界面没有显示,设置的一个临时状态

NoMoreData 用于上拉加载更多时,没有更多数据的时候

4.详细分析和关键代码分析

MJRefreshComponent类,所有footer和header的父类

监听了scrollView的contentOffset和contentInset和pan的state变化,通过这几个变化让MJRefreshComponent子类做出不同的变化。

当拉下刷下时,headerView可以一直显示是因为,当达到刷新临界点时,会通过resetInset方法让UIScrollView下移

5.模拟拉上刷新代码

    let scrollView = UIScrollView()

    scrollView.backgroundColor = .red

    self.view.addSubview(scrollView)

    scrollView.alwaysBounceVertical = true

    scrollView.contentInset = UIEdgeInsets(top: -30, left: 0, bottom: 0, right: 0)

    let topView = UIView(frame: CGRect(x: 0, y: 0, width: screenWidth, height: 30))

    topView.backgroundColor = .cyan

    scrollView.addSubview(topView)

    scrollView.snp.makeConstraints { (make) in

        make.edges.equalToSuperview()

    }

相关文章

  • MJRefresh简单分析

    1. 使用说明 tableView.mj_header = NGAnimationRefreshHeaderVie...

  • MJRefresh简单使用

    MJRefresh简单使用 导入MJRefresh.h文件即可

  • MJRefresh

    MJRefresh原理分析从MJRefresh源码学习上拉下刷新的基本原理MJRefresh源码阅读使用Xtrac...

  • iOS MJRefresh之 Header的实现

       MJRefresh是Github上点赞次数最多的刷新控件,本文主要分析MJRefresh的实现原理,学习作者...

  • 简单封装MJRefresh

    #import "MJRefreshNormalHeader.h" @interfaceXHWRefreshNor...

  • MJRefresh简单使用

    一、默认下拉刷新和上拉加载更多(通过block) 另一种默认下拉刷新和上拉加载更多(通过action), 有时候我...

  • MJRefresh源码分析

    一直好奇下拉刷新类的框架是怎么实现,这周看了star最多的MJRefresh。源码继承结构清晰,实现的较为巧妙。 ...

  • MJRefresh源码分析

    MJRefresh代码框架 MJRefreshComponent——基类 主要职能 声明控件的所有状态 声明控件的...

  • MJRefresh源码分析

    在分析完该库的源码时,遇到问题,看了看J_Knight_的MJRefresh源码解析,确实高屋建甐,境界不一样,推...

  • MJRefresh源码分析

    MJRefresh是李明杰老师的作品,对于iOS的开发者来说,一定非常熟悉这个简单实用,功能强大的下拉加载,上拉刷...

网友评论

      本文标题:MJRefresh简单分析

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