MJRefresh—快速集成下拉上拉刷新
MJRefresh介绍:
仅需一行代码就可以为UITableView或者CollectionView加上下拉刷新或者上拉刷新功能。可以自定义上下拉刷新的文字说明。
示例代码:
#import "ViewController.h"
//导入主头文件
#import "MJRefresh.h"
@interface ViewController ()
{
UITableView* tableView;
}
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height) style:UITableViewStylePlain];
[self.view addSubview:tableView];
//下拉刷新
tableView.mj_header= [MJRefreshNormalHeader headerWithRefreshingBlock:^{
//模拟延迟加载数据,因此2秒后才调用(真实开发中,可以移除这段gcd代码)
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
//结束刷新
[tableView.mj_header endRefreshing];
});
}];
//马上进入刷新状态
[tableView.mj_header beginRefreshing];
//设置自动切换透明度(在导航栏下面自动隐藏)
tableView.mj_header.automaticallyChangeAlpha = YES;
//上拉刷新
tableView.mj_footer = [MJRefreshBackNormalFooter footerWithRefreshingBlock:^{
//模拟延迟加载数据,因此2秒后才调用(真实开发中,可以移除这段gcd代码)
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
// 结束刷新
[tableView.mj_footer endRefreshing];
});
}];
//下拉刷新 自定义文字
// [self customPullDownToRefresh];
//上拉刷新 自定义文字
// [self customPullUpToRefresh];
}
#pragma mark - 下拉刷新 自定义文字
-(void)customPullDownToRefresh{
// 设置回调(一旦进入刷新状态,就调用target的action,也就是调用self的loadNewData方法)
MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(loadNewData)];
// 设置文字
[header setTitle:@"下拉可以刷新" forState:MJRefreshStateIdle];
[header setTitle:@"松开立即刷新" forState:MJRefreshStatePulling];
[header setTitle:@"正在帮你刷新 ..." forState:MJRefreshStateRefreshing];
// 设置字体
header.stateLabel.font = [UIFont systemFontOfSize:15];
header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:13];
// 设置颜色
header.stateLabel.textColor = [UIColor grayColor];
header.lastUpdatedTimeLabel.textColor = [UIColor grayColor];
// 马上进入刷新状态
[header beginRefreshing];
//模拟延迟加载数据,因此2秒后才调用(真实开发中,可以移除这段gcd代码)
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
//结束刷新
[tableView.mj_header endRefreshing];
});
// 设置刷新控件
tableView.mj_header = header;
//设置自动切换透明度(在导航栏下面自动隐藏)
tableView.mj_header.automaticallyChangeAlpha = YES;
}
-(void)loadNewData{
//模拟延迟加载数据,因此2秒后才调用(真实开发中,可以移除这段gcd代码)
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
//结束刷新
[tableView.mj_header endRefreshing];
});
}
#pragma mark - 上拉刷新 自定义文字
-(void)customPullUpToRefresh{
// 设置回调(一旦进入刷新状态,就调用target的action,也就是调用self的loadMoreData方法)
MJRefreshBackNormalFooter *footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(loadMoreData)];
// 设置文字
[footer setTitle:@"上拉可以刷新" forState:MJRefreshStateIdle];
[footer setTitle:@"松开立即刷新" forState:MJRefreshStatePulling];
[footer setTitle:@"正在帮你刷新 ..." forState:MJRefreshStateRefreshing];
[footer setTitle:@"没有更多数据" forState:MJRefreshStateNoMoreData];
// 设置字体
footer.stateLabel.font = [UIFont systemFontOfSize:17];
// 设置颜色
footer.stateLabel.textColor = [UIColor grayColor];
// 设置footer
tableView.mj_footer = footer;
}
-(void)loadMoreData{
//模拟延迟加载数据,因此2秒后才调用(真实开发中,可以移除这段gcd代码)
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
//结束刷新
[tableView.mj_footer endRefreshing];
});
}
@end