iOS开发示例————第三方框架MJRefresh简单使用

本文介绍了如何在iOS开发中使用第三方框架MJRefresh,通过简单的步骤展示了如何设置header和footer,提供了带注释的示例代码,帮助开发者快速掌握该框架。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先要感谢这篇文章,自己在网上找了很多资料,这篇写的比较好:http://hao.jobbole.com/mjrefresh-ios/


自己学习使用了之后感觉其实还是很好用的,主要就是header和footer这两个对象的一些设置,比较方便。

自己写了个带注释的小演示:

首先导入MJRefresh文件夹和在实现的类中包头文件“MJRefresh.h”

#import "ViewController.h"
#import "MJRefresh.h"

@interface ViewController () <UITableViewDelegate, UITableViewDataSource> {
    UITableView *_tableView;
    NSMutableArray *_dataArray;
    NSMutableArray *_imagesArray;
}

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    //遍历图片到array
//    for (int i = 10; i <= 60; i++) {
//        [_imagesArray addObject:[UIImage imageNamed:[NSString stringWithFormat:@"dropdown_anim__000%i@2x", i]]];
//    }
    
    //将照片放入数组中
    UIImage *middleImage = [UIImage imageNamed:@"middle"];
    UIImage *footerImage = [UIImage imageNamed:@"footer"];
    UIImage *headerImage = [UIImage imageNamed:@"header"];
    _imagesArray = [NSMutableArray arrayWithObjects:footerImage, headerImage, middleImage, nil];

    _dataArray = [NSMutableArray arrayWithObjects:@"1", @"2", @"3", @"4", @"5", nil];
    
    _tableView = [[UITableView alloc] initWithFrame:self.view.bounds style:UITableViewStylePlain];
    _tableView.delegate = self;
    _tableView.dataSource = self;
    [self.view addSubview:_tableView];
    
    /*
     MJRefreshComponent-------刷新控件的基类
     
     MJRefreshHeader----------基础的下拉刷新控件
     MJRefreshStateHeader-----带有状态文字的下拉刷新控件
     MJRefreshNormalHeader----默认的下拉刷新控件
     MJRefreshGifHeader-------带动图的下拉刷新控件
     
     MJRefreshFooter----------基础的上拉刷新控件
     MJRefreshBackFooter------会自动弹到底部的上拉刷新控件
     MJRefreshStateFooter-----带有状态文字的上拉刷新控件
     MJRefreshBackNormalFooter默认的带状态文字并自动回弹的上拉刷新控件
     MJRefreshBackGifFooter---带动图的上拉刷新控件
     
     MJRefreshAutoFooter------会自动刷新的上拉刷新控件
     MJRefreshAutoGifFooter---会自动刷新带动图的上拉刷新控件
     */

    //创建下拉加载控件类
//    MJRefreshStateHeader *header = [MJRefreshStateHeader headerWithRefreshingTarget:self refreshingAction:@selector(headerRefresh)];
    
    MJRefreshGifHeader *header = [MJRefreshGifHeader headerWithRefreshingTarget:self refreshingAction:@selector(headerRefresh)];
   
    //设置动图
    [header setImages:_imagesArray duration:2 forState:MJRefreshStateRefreshing];
    [header setImages:_imagesArray duration:2 forState:MJRefreshStatePulling];
//    [header setImages:_imagesArray duration:2 forState:MJRefreshStateRefreshing];
 
    _tableView.mj_header = header;
    
    //创建上拉加载控件类
//    MJRefreshBackNormalFooter *footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(footerRefresh)];
    
    MJRefreshBackNormalFooter *footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(footerRefresh)];//此种状态不能设置动图
    
    //设置动图
//    [footer setImages:_imagesArray duration:2 forState:MJRefreshStateRefreshing];
//    [footer setImages:_imagesArray duration:2 forState:MJRefreshStatePulling];
//    [footer setImages:_imagesArray duration:2 forState:MJRefreshStateRefreshing];
    
    _tableView.mj_footer = footer;
    
    //马上进入刷新状态
//    [header beginRefreshing];
    
    //是否根据拖拽比例自动切换透明度
    header.automaticallyChangeAlpha = YES;
    footer.automaticallyChangeAlpha = YES;
    
    //是否隐藏时间
//    header.lastUpdatedTimeLabel.hidden = NO;
    //是否隐藏状态
//    header.stateLabel.hidden = NO;
    
    //下拉自定义加载文字
    [header setTitle:@"Pull down to refresh" forState:MJRefreshStateIdle];
    [header setTitle:@"Release to refresh" forState:MJRefreshStatePulling];
    [header setTitle:@"Loading ..." forState:MJRefreshStateRefreshing];
    
    //自定义字体
    header.stateLabel.font = [UIFont systemFontOfSize:15];
    header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:14];
    
    //自定义颜色
    header.stateLabel.textColor = [UIColor redColor];
    header.lastUpdatedTimeLabel.textColor = [UIColor blueColor];
    
    //上拉自定义文字
//    [footer setTitle:@"Click or drag up to refresh" forState:MJRefreshStateIdle];
//    [footer setTitle:@"Loading more ..." forState:MJRefreshStateRefreshing];
//    [footer setTitle:@"No more data" forState:MJRefreshStateNoMoreData];
//    
//    //自定义字体
    footer.stateLabel.font = [UIFont systemFontOfSize:17];

   //自定义颜色
    footer.stateLabel.textColor = [UIColor redColor];
    
    //变为没有更多数据的状态
//    [footer endRefreshingWithNoMoreData];
    

}

#pragma mark - dataSource

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return _dataArray.count;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *cellID = @"cellID";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellID];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellID];
    }
    cell.textLabel.text = _dataArray[indexPath.row];
    return cell;
}

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return 1;
}

#pragma mark - refresh

- (void)headerRefresh {
    [self performSelector:@selector(refreshData) withObject:nil afterDelay:1];
}

- (void)footerRefresh {
    [self performSelector:@selector(loadData) withObject:nil afterDelay:1];
}

- (void)refreshData {
    [_dataArray addObject:@"freshData"];
    [_tableView reloadData];
    [_tableView.mj_header endRefreshing];
}

- (void)loadData {
    [_dataArray addObject:@"loadData"];
    [_tableView reloadData];
    [_tableView.mj_footer endRefreshing];
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end



上面只是实现了一部分功能,完善的还要去git上研究,或者在开头链接中学习。


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值