MJRefresh是MJ大神写的一个实现上拉刷新和下拉刷新的第三方库,这个库目前在很多有名的应用上都有使用看,下面就来分析一下MJRefresh的源码。
1.简单应用
下面创建一个绿色的UIScrollview,然后在UIScrollview上加上一个红色的视图作为子视图:
self.scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 20, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height)];
self.scrollView.backgroundColor = [UIColor greenColor];
[self.view addSubview:_scrollView];
self.scrollView.mj_header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(refresh)];
self.scrollView.contentInset = UIEdgeInsetsMake(54, 0, 0, 0);
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.scrollView.frame.size.width, self.scrollView.frame.size.height)];
view.backgroundColor = [UIColor redColor];
[self.scrollView addSubview:view];
然后我们看一下效果:
在这里我们设置的contentInset.top = 54,54正是这个下拉控件的高度,所以整个下拉控件是完全可见的。
2.源码分析
我们首先看一下MJRefresh的源码的类的结构,由于上拉刷新和下拉刷新控件的原理基本一致,因此这里我们仅使用下拉刷新控件来分析:
self.scrollView.mj_header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(refresh)];