iOS实现MJRefresh下拉刷新(上拉加载)使用详解

  

下拉刷新控件目前比较火的有好几种,本人用过MJRefresh和SVPullToRefresh,相对而言,前者比后者可定制化,拓展新都更高一点。

  

因此本文着重讲一下MJRefresh的简单用法。

  

<>强导入项目:
  

  

cocoapods导入:豆荚的MJRefresh
  

  

手动导入:

  
      <李>,将MJRefresh文件夹中的所有文件拽入项目中李   <李>导入主头文件:#进口“MJRefresh.h”   
  

使用介绍:

  

 iOS实现MJRefresh下拉刷新(上拉加载)使用详解

  

广泛性分为6种使用场景,分别对应:默认,动画图片,隐藏时间,隐藏时间和状态,自定义文字说明,以及自定义刷新控件只

  

下面就各种场景分别讲一下:

  

1,默认场景

  

 iOS实现MJRefresh下拉刷新(上拉加载)使用详解

  

包含刷新菊花,下拉说明,时间

  

使用代码:

        # pragma马克UITableView +下拉刷新默认      - (void) example01      {      __weak __typeof weakSelf=自我(自我);//设置回调(一旦进入刷新状态就会调用这个refreshingBlock)      self.tableView。mj_header=[MJRefreshNormalHeader headerWithRefreshingBlock: ^ {      [weakSelf loadNewData];      });//马上进入刷新状态      [self.tableView。mj_header beginRefreshing];      }   之前      

2,使用动画图片

  

 iOS实现MJRefresh下拉刷新(上拉加载)使用详解

  

PS:这里的动画并不是用gif实现的,而是利用序列帧(即若干图片组成一个不同状态下的图片数组,然后根据位置显示不同图片)去展现。

        # pragma马克UITableView +下拉刷新动画图片      - (void) example02      {//设置回调(一旦进入刷新状态,就调用目标的行动,也就是调用自我的loadNewData方法)      self.tableView。mj_header=[MJChiBaoZiHeader headerWithRefreshingTarget:自我refreshingAction: @ selector (loadNewData)];//马上进入刷新状态      [self.tableView。mj_header beginRefreshing];      }      之前      

这里用大众点评吃包子图片为例,新建一个自定义类MJChiBaoZiHeader,继承:MJRefreshGifHeader

        #进口“MJRefreshGifHeader.h”      @ interface MJChiBaoZiHeader: MJRefreshGifHeader      @end   之前      

然后重写制备方法,代码:

        - (void)准备      {      (超级准备);//设置普通状态的动画图片      NSMutableArray * idleImages=[NSMutableArray数组);      (了NSUInteger i=1;i<=60;我+ +){      用户界面图像*图像=[界面图像imageNamed:(NSString stringWithFormat: @“dropdown_anim__000%zd”,我]];      [idleImages addObject:图像);      }      【自我setImages: idleImages forState MJRefreshStateIdle):;//设置即将刷新状态的动画图片(一松开就会刷新的状态)      NSMutableArray * refreshingImages=[NSMutableArray数组);      (了NSUInteger i=1;i<=3;我+ +){      用户界面图像*图像=[界面图像imageNamed:(NSString stringWithFormat: @“dropdown_loading_0%zd”,我]];      [refreshingImages addObject:图像);      }      【自我setImages: refreshingImages forState MJRefreshStatePulling):;//设置正在刷新状态的动画图片      【自我setImages: refreshingImages forState MJRefreshStateRefreshing):;      }   之前      

关键点就是这里的两个图片数组,60是因为下拉控件默认拉动距离就是60距离,这里比较严谨,利用60张不同图片去对应每个距离点,当然实际中,我们可以缩减,不需要精确到每个距离点对应一张图片,这里个人自己决定。

  

这里需要先了解下,下拉的五种状态。如下:

     /* *刷新控件的状态*/typedef NS_ENUM (NSInteger MJRefreshState) {/* *普通闲置状态*/MJRefreshStateIdle=1,/* *松开就可以进行刷新的状态*/MJRefreshStatePulling,/* *正在刷新中的状态*/MJRefreshStateRefreshing,/* *即将刷新的状态*/MJRefreshStateWillRefresh,/* *所有数据加载完毕,没有更多的数据了*/MJRefreshStateNoMoreData      };      

iOS实现MJRefresh下拉刷新(上拉加载)使用详解