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

2020-01-18 19:56:15王振洲

b、重写prepare方法


#pragma mark 在这里做一些初始化配置(比如添加子控件)

- (void)prepare

{

  [super prepare];  

  // 设置控件的高度

  self.mj_h = 50;

   

  // 添加label

  UILabel *label = [[UILabel alloc] init];

  label.textColor = [UIColor colorWithRed:1.0 green:0.5 blue:0.0 alpha:1.0];

  label.font = [UIFont boldSystemFontOfSize:16];

  label.textAlignment = NSTextAlignmentCenter;

  [self addSubview:label];

  self.label = label;

   

  // 打酱油的开关

  UISwitch *s = [[UISwitch alloc] init];

  [self addSubview:s];

  self.s = s;

   

  // logo

  UIImageView *logo = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Logo"]];

  logo.contentMode = UIViewContentModeScaleAspectFit;

  [self addSubview:logo];

  self.logo = logo;

   

  // loading

  UIActivityIndicatorView *loading = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];

  [self addSubview:loading];

  self.loading = loading;

} 

c、重写 placeSubviews


#pragma mark 在这里设置子控件的位置和尺寸

- (void)placeSubviews

{

  [super placeSubviews];

 

  self.label.frame = self.bounds;

   

  self.logo.bounds = CGRectMake(0, 0, self.bounds.size.width, 100);

  self.logo.center = CGPointMake(self.mj_w * 0.5, - self.logo.mj_h + 20);

   

  self.loading.center = CGPointMake(self.mj_w - 30, self.mj_h * 0.5);

} 

d、根据下拉位移,自定义不同位移的控件展示,比如显示不同文字,颜色等


#pragma mark 监听控件的刷新状态

- (void)setState:(MJRefreshState)state

{

  MJRefreshCheckState;

 

  switch (state) {

    case MJRefreshStateIdle:

      [self.loading stopAnimating];

      [self.s setOn:NO animated:YES];

      self.label.text = @"赶紧下拉吖(开关是打酱油滴)";

      break;

    case MJRefreshStatePulling:

      [self.loading stopAnimating];

      [self.s setOn:YES animated:YES];

      self.label.text = @"赶紧放开我吧(开关是打酱油滴)";

      break;

    case MJRefreshStateRefreshing:

      [self.s setOn:YES animated:YES];

      self.label.text = @"加载数据中(开关是打酱油滴)";

      [self.loading startAnimating];

      break;

    default:

      break;

  }

} 

上拉刷新加载其实和下拉是同理,只不过区别就是:

self.tableView.mj_header  变成 self.tableView.mj_footer,后面的类也由

MJRefreshNormalHeader 变成  MJRefreshAutoNormalFooter。

实现原理是相同的。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持ASPKU。


注:相关教程知识阅读请移步到IOS开发频道。