美文网首页
MJRfresh 调整刷新控件顶部距离

MJRfresh 调整刷新控件顶部距离

作者: 哈么么茶 | 来源:发表于2016-07-31 23:37 被阅读257次

    今天碰到一个问题,UIScrollView上面放了一个滚动图片控件,但不是UIScrollView的scrollHeaderView,因为UIScrollView不像tableview有这个方法,于是把UIScrollView inset设置一下,让其往下拉动一定距离。这样滚动图片添加到UIScrollView上面,设置下frame,也能一起滚动,皆大欢喜。
    那么问题来了,MJRfresh刷新数据的时候看不到状态栏。很显然,控件将刷新状态挡住了。这样只能尝试改动源码了。一向对看复杂代码有种恐惧症。先来学习一波。

    我们都知道,MJRfresh是用contentInset实现的。默认情况下,如果一个UIScrollView的左上角在导航栏的正下方,那么它的contentInset是64,而contentOffset是-64。继续下拉的话,contentOffset就会越来越小,如果上滑,contentOffset就会增大,直到左上角达到屏幕的左上角时,contentOffset刚好为0。
    默认情况下,如果下拉一个UIScrollView,在松手之后,会弹回初始的位置(导航栏下方)。而大部分的下拉刷新控件,都是将自己放在UIScrollView的上方,起始y设置成负数,所以平时不会显示出来,只有下拉的时候才会出现,放开又会弹回去。然后在loading的时候,临时把contentInset增大,相当于把UIScrollView往下挤,于是下拉刷新的控件就会显示出来,然后刷新完成之后,再把contentInset改回原来的值,实现回弹的效果

    看了之后觉得应该是进去改个contentInset.y,当时想源码肯定把y设置为定值了,改源码还要分正常Inset和这种不正常Inset两种情况,搞个BOOL值判断一下。

    随便进去,很容易发现了“设置位置”

    屏幕快照 2016-07-31 下午11.28.01.png

    猜想有设置y,搜索mj_y,在header里有个如下:

    屏幕快照 2016-07-31 下午11.27.06.png

    自己在后面添加一个负数,发现位置果然变了。那按照自己的想法判断一下,多减去一个定值就OK了,屁颠的跑到.h文件里,突然发现原来大神早都设置好了。


    屏幕快照 2016-07-31 下午11.27.27.png

    相关文章

      网友评论

          本文标题:MJRfresh 调整刷新控件顶部距离

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