美文网首页
阅读MJRefresh小记

阅读MJRefresh小记

作者: aksskas | 来源:发表于2017-10-31 15:28 被阅读0次

MJRefresh是iOS中一个非常常用的刷新控件的第三方库,源码的阅读也由于有MJ老师的注释而非常轻松,以下做个简要记录。

缘由

项目是由Swift编写,通过桥接文件集成了MJRefreshFMDB。以前写OC时也没觉得集成OC的第三方有啥不好,但是强迫症害人不浅啊。

源码解读

1. 源码主要类的功能解读
  • MJRefreshComponent 作为整个刷新控件的基类,定义刷新控件的状态,刷新的方法以及子类应该实现的方法。
  • MJRefreshHeader作为下拉刷新控件的基类,实现了下拉刷新的功能,但具体的刷新视图并未实现,如果想自定义刷新视图,则可继承该类视图。
  • MJRefreshFooter 作为下拉加载更多的基类,以下进一步分为上拉自动加载MJRefreshAutoFooter和上拉显式加载MJRefreshBackFooter,可根据需要继承上述两类,以实现上拉加载更多的自定义视图
  • UIScrollView+MJRefresh该分类通过运行时机制,给UIScrollView类动态添加了headerfooter属性,关于运行时机制可参考谈谈Runtime
2. 实现思路小结
  • 通过KVO监听UIScrollViewcontentOffset属性,根据contentOffset.y来设置刷新控件的不同状态。
  • 依据状态的变化来驱动事件,在refreshing状态下临时设定contentInset.topcontentInset.bottom的值来控制刷新视图的展现,在状态变化后还原。
  • 通过运行时机制给UIScrollView动态添加属性,以方便用户集成。

拓展

  • iOS6开始,UITableViewController自身带有一个refreshControl,实现它即可设置一个简单的刷新控件;iOS10更进一步,UITableView拥有一个refreshControl
  • 关于UIRefreshControl内部默认有个UIActivityIndicatorView的菊花视图,可以通过移除子视图,然后重新布局来实现自定义UIRefreshControl

总结

  • UIScrollView是iOS最常用的控件,UITableViewUICollectionView都继承自它。熟悉UIScrollView的属性和方法很有必要。具体属性这里不再赘笔,需要的可以看看UIScrollView的属性和用法

写代码这种事终究是知其然,更要知其所以然!

相关文章

  • 阅读MJRefresh小记

    MJRefresh是iOS中一个非常常用的刷新控件的第三方库,源码的阅读也由于有MJ老师的注释而非常轻松,以下做个...

  • MJRefresh源码阅读3——干货整理

    前言 MJRefresh源码阅读1——结构梳理MJRefresh源码阅读2——核心类MJRefreshHeader...

  • MJRefresh

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

  • MJRefresh阅读笔记

    李明杰老师的代表作之一MJRefresh可以说是棒棒的,很多小伙伴都会在没有什么特殊要求的情况下使用这个框架,简单...

  • MJRefresh 源码阅读

    MJRefresh项目地址 https://github.com/CoderMJLee/MJRefresh下载下来...

  • MJRefresh源码阅读

    可改进部分 在 MJRefreshComponent.h 的 34 行, typedef void (^MJRef...

  • MJRefresh 源码阅读

    1、Runtime1.1 关联对象该框架为UIScrollView添加了两个“成员变量”,header和foote...

  • 阅读MJRefresh有感

    继续阅读关于UI方面的比较好的第三方库MJRefresh 这个库整体难度不大,但是作者的思路很好很清晰,核心是使用...

  • 阅读MJRefresh源码

    该框架的结构设计得很清晰,使用一个基类MJRefreshComponent来做一些基本的设定,然后通过继承的方式,...

  • 阅读MJRefresh源码

    先看一下源码目录结构: 1.Base MJRefreshComponent:基类(继承至UIView) ``` /...

网友评论

      本文标题:阅读MJRefresh小记

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