1.首先去github上下载最新版 MJ刷新库 下载MJ链接
2.tableVIew中加入相关代码 _tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, MCAPPWidth, MCAPPHeight - 64)]; _tableView.backgroundColor = myClearColor; _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; _tableView.delegate = self; _tableView.dataSource = self; _tableView.showsVerticalScrollIndicator = NO; _tableView.scrollsToTop = YES; [self.view addSubview:_tableView]; [_tableView addGifHeaderWithRefreshingTarget:self refreshingAction:@selector(loadData)]; [_tableView addGifFooterWithRefreshingTarget:self refreshingAction:@selector(loadMoreData)]; [self gif];
//loadData 为你下拉刷新时请求网络数据的方法 loadMoreData为你上拉加载时请求网络数据的方法
3. [self gif]
- (void)gif { NSMutableArray *idleImages = [NSMutableArray array]; //这块为你刷新时出现的gif图 需要循环添加到数组中 for (NSUInteger i = 1; i <= 5; i++) { UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:@img_loading-%lu.png, (unsigned long)i]]; [idleImages addObject:image]; } [_tableView.gifHeader setImages:idleImages forState:MJRefreshHeaderStateIdle]; _tableView.gifFooter.refreshingImages = idleImages; _tableView.gifHeader.updatedTimeHidden = YES; // 设置即将刷新状态的动画图片(一松开就会刷新的状态) NSMutableArray *refreshingImages = [NSMutableArray array]; for (NSUInteger i = 1; i <= 5; i++) { UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:@img_loading-%lu.png, (unsigned long)i]]; [refreshingImages addObject:image]; } [_tableView.gifHeader setImages:refreshingImages forState:MJRefreshHeaderStatePulling]; }
4. 自定义刷新时顶部底部出现的Label和gif图的frame 这里举footer的例子 MJRefreshGifFooter.m - (void)layoutSubviews { [super layoutSubviews]; // 指示器 gif图的frame self.gifView.frame = CGRectMake(self.bounds.origin.x + 20, self.bounds.origin.y + 15, self.bounds.size.width / 2, self.bounds.size.height / 2);
if (self.stateHidden) { self.gifView.contentMode = UIViewContentModeCenter; } else { self.gifView.contentMode = UIViewContentModeScaleAspectFit; self.gifView.mj_w = self.mj_w * 0.5 - 90; } } MJRefreshFooter.m - (void)layoutSubviews { [super layoutSubviews]; self.loadMoreButton.frame = self.bounds; self.loadMoreButton.hidden = YES; //Label的frame self.stateLabel.frame = CGRectMake(self.bounds.origin.x, self.bounds.origin.y + 15, self.bounds.size.width, self.bounds.size.height / 2); self.noMoreLabel.frame = self.bounds; }
同理header的gif图frame 和Labelframe 都在相应的类里的方法里 都可以根据需求去修改
更多的设置可以看下MJ在github上相关的文档。 ================================
下拉刷新01-默认self.tableView.header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{
// 进入刷新状态后会自动调用这个block
}];
或
// 设置回调(一旦进入刷新状态,就调用target的action,也就是调用self的loadNewData方法)
self.tableView.header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(loadNewData)];
// 马上进入刷新状态
[self.tableView.header beginRefreshing]; 下拉刷新02-动画图片// 设置回调(一旦进入刷新状态,就调用target的action,也就是调用self的loadNewData方法)
MJRefreshGifHeader *header = [MJRefreshGifHeader headerWithRefreshingTarget:self refreshingAction:@selector(loadNewData)];
// 设置普通状态的动画图片
[header setImages:idleImages forState:MJRefreshStateIdle];
// 设置即将刷新状态的动画图片(一松开就会刷新的状态)
[header setImages:pullingImages forState:MJRefreshStatePulling];
// 设置正在刷新状态的动画图片
[header setImages:refreshingImages forState:MJRefreshStateRefreshing];
// 设置header
self.tableView.header = header; 下拉刷新03-隐藏时间// 隐藏时间
header.lastUpdatedTimeLabel.hidden = YES; 下拉刷新04-隐藏状态和时间// 隐藏时间
header.lastUpdatedTimeLabel.hidden = YES;
// 隐藏状态
header.stateLabel.hidden = YES; 下拉刷新05-自定义文字// 设置文字
[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]; 下拉刷新06-自定义刷新控件self.tableView.header = [MJDIYHeader headerWithRefreshingTarget:self refreshingAction:@selector(loadNewData)];
// 具体实现参考MJDIYHeader.h和MJDIYHeader.m 上拉刷新01-默认self.tableView.footer = [MJRefreshAutoNormalFooter footerWithRefreshingBlock:^{
// 进入刷新状态后会自动调用这个block
}];
或
// 设置回调(一旦进入刷新状态,就调用target的action,也就是调用self的loadMoreData方法)
self.tableView.footer = [MJRefreshAutoNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(loadMoreData)]; 上拉刷新02-动画图片// 设置回调(一旦进入刷新状态,就调用target的action,也就是调用self的loadMoreData方法)
MJRefreshAutoGifFooter *footer = [MJRefreshAutoGifFooter footerWithRefreshingTarget:self refreshingAction:@selector(loadMoreData)];
// 设置刷新图片
[footer setImages:refreshingImages forState:MJRefreshStateRefreshing];
// 设置尾部
self.tableView.footer = footer; 原文地址:https://github.com/CoderMJLee/MJRefresh |
|