对MJ_Refresh的浅读

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


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

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

相关类

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:它是最基础的类,所以做了一些很基础的事情:初始化、布局、监听、监听后操作。因为下拉加载和上拉刷新实现有点不同,所有监听的实现是留给了子类。


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

状态

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

初始化

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

布局:

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

监听:

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,428评论 25 709
  • MJRefresh是李明杰老师的作品,到现在已经有9800多颗star了,是一个简单实用,功能强大的iOS下拉刷新...
    Style_mao阅读 3,904评论 1 2
  • 终于明白为什么我喜欢坐飞机了。 听过很多人对于飞机的恐惧,我很少感觉害怕。或许在看到灾难发生时闪过的一丝不安,也被...
    丽芙奇阅读 2,372评论 2 1
  • 你知道吗,皮肤也有“年龄”哦。“肤龄”不同的皮肤,有不一样的表现,保养得当的皮肤“肤龄”就会小,看起来就会年轻。一...
    晴空育儿说888阅读 3,836评论 0 0
  • 2017.11.5 今天的愚蠢终究成就更好的自已 我很久没有真的讨厌自己了,让我产生这种感觉是由于今天下午出...
    梁_lmx阅读 3,446评论 0 1

友情链接更多精彩内容