首先要感谢这篇文章,自己在网上找了很多资料,这篇写的比较好: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上研究,或者在开头链接中学习。