一:前言
记得工作中第一次用的刷新控件是svpulltorefresh
,用法稍微有点麻烦,而且bug颇多,后来果断放弃,现在用的是MJRefresh
,不管是用法还是bug,都比前一个好多了,但是不久前也遇到了一个致命的bug,有好些情况下会导致MJRefresh
陷入一个死循环,导致不断的刷新,只能重启软件才行。MJRefresh
工程比较庞大,找到了bug也很难修改,然后还是决定自己写一个,系统提供的UIRefreshControl
我认为是最好的,缺点是不提供自定义UI的方法,那么我就自己基于它来自定义UI。我不是一开始就决定继承于UIRefreshControl
,我同时也写了一个继承与UIView
的control,两个进行对比,发现使用UIview
会有很多弊端,这种弊端在一些复杂特殊的情况下一下子就暴露出来了,而且很难解决,当然,正常状态下是没什么问题的,有兴趣的同学倒是可以去试一试。本demo供大家学习和参考,如有发现bug,还请issues 我。
二: 了解 UIRefreshControl
- 基本使用方法
1 | //初始化一个control |
存在的问题
- 刷新时的动画是一个灰色小菊花,很多情况下不符合app的刷新动画效果
- 经过多次反复测试,下拉的偏移量达到130以上才会触发刷新方法,很显然这个也不符合,一般的刷新控件的高度60左右,所以下拉的偏移量达到60就可以触发刷新的方法了。
自定义控件的思路
- 去掉默认的动画效果
- 自定义自己的动画效果
- 改变满足刷新时的条件