美文网首页
阅读MJRefresh源码学到的知识点

阅读MJRefresh源码学到的知识点

作者: 北你妹的风 | 来源:发表于2018-02-22 14:51 被阅读7次

1.利用Runtime给category中增加属性

category可以访问类中的已有的属性,但不能新增加属性。使用runtime实现新增属性mj_header,代码如下:

- (void)setMj_header:(MJRefreshHeader *)mj_header

{

if (mj_header != self.mj_header) {

// 删除旧的,添加新的

[self.mj_header removeFromSuperview];

[self insertSubview:mj_header atIndex:0];

// 存储新的

[self willChangeValueForKey:@"mj_header"]; // KVO

objc_setAssociatedObject(self, &MJRefreshHeaderKey,

mj_header, OBJC_ASSOCIATION_ASSIGN);

[self didChangeValueForKey:@"mj_header"]; // KVO

}

}

- (MJRefreshHeader *)mj_header

{

return objc_getAssociatedObject(self, &MJRefreshHeaderKey);

}

2.UIScrollview的contentInset属性

大家经常用到的是offset属性和contentsize属性,很少关注contentInset这个属性。

contentSize是UIScrollView可以滚动的区域(CGSize),offset是UIScrollViw滚动的距离(CGPoint)

而contentInset是UIScrollView上下左右四个方位额外扩展的区域(UIEdgeInsets),默认值是UIEdgeInsetZero

3.KVO,监听UIScrollview的offset属相,达到一定值的时候,做相应的处理。

相关文章

  • 阅读MJRefresh源码学到的知识点

    1.利用Runtime给category中增加属性 category可以访问类中的已有的属性,但不能新增加属性。使...

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

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

  • MJRefresh

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

  • MJRefresh 源码阅读

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

  • MJRefresh源码阅读

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

  • MJRefresh 源码阅读

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

  • 阅读MJRefresh源码

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

  • 阅读MJRefresh源码

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

  • MJRefresh源码阅读

    很多项目的上拉加载下拉刷新功能都是基于MJRefresh来实现的,下面通过源码来分析几个问题。 一、下拉刷新时,M...

  • 我对MJRefresh框架的了解 -> MJRefresh

    MJRefresh源码地址:CoderMJLee/MJRefresh · GitHub 一、基本结构 github...

网友评论

      本文标题:阅读MJRefresh源码学到的知识点

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