美文网首页
阅读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小记

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