对MJ_Refresh的浅读

        以前自己也看过一些框架源码,但是都只是看的很粗,只看了个大概,完全没有理解。在受到刺激下,决定一改以前的坏习惯,尽自己的能力好好研究下大神们的代码。


研究mj的代码先要了解他的大体思路:如图

对MJ_Refresh的浅读_第1张图片

(这个图是我盗用的,)。大体说一下:两大块,头部,脚部,都继承component这个类。在将component之前 我先来看看mj这个库还有哪些其它类。

对MJ_Refresh的浅读_第2张图片
相关类

bundle  存储文件的,图片和国际化语言部分。

MJRefresh.h主要是对外的一个公共文件

MJRefreshConst.h 一些常量:如文字大小、颜色、文字内容等等

其它部分就都是分类:NSBoundle主要是国际化和图片的读取、UIView主要是简化对坐标的获取、UIScrollView+MJExtension也是简化对inset、offset、size的读取。最后我们再来讲讲UIScrollerView+MJRefresh的内容。

UIScrollerView+MJRefresh 可以将mj加到所指定的UIScrollerView的头部或者脚部。通过runtime机制的关联,将UIScrollerView和mj_header、mj_footer关联起来,这样就可以将它们两个作为UIScrollerView的成员变量。

了解过这些公用类之后,我们从基类开始(或许有些人喜欢从代码的入口开始,个人习惯而已)component:它是最基础的类,所以做了一些很基础的事情:初始化、布局、监听、监听后操作。因为下拉加载和上拉刷新实现有点不同,所有监听的实现是留给了子类。


      昨天因为公司的事情就没有写了,继续继续(反正没人看 哈哈)。

对MJ_Refresh的浅读_第3张图片
状态

几种刷新的状态,很重要,因为后面的布局,判断等都需要根据它的状态来显示。

初始化

对MJ_Refresh的浅读_第4张图片

其实初始化很简单,除了初始化了状态,其它的都是子类根据自己的需要来显示。

布局:

对MJ_Refresh的浅读_第5张图片

布局也没有做什么,placeSubviews留给子类实现。对view进行判断,如果不是scorllerview就返回。

监听:

对MJ_Refresh的浅读_第6张图片

监听中:主要对contentsize,offset,滑动的方向监听。同时,监听后的操作也是子类实现。

写到这里的时候,其实我不太想写了,为何?因为我这样讲,根本讲不出来什么东西,只是代码的阅读,根本说不出东西。如果是以前的我,可能我这个就写到这里就不会写了,但是我想,竟然要研究肯定要有吸收才行,不然不是白花时间 了。故我打算自己先写一个下拉刷新,再来对比mj的,看看自己的差距,这样估计我可以写出更多更有营养的东西。

你可能感兴趣的:(对MJ_Refresh的浅读)