MJRefresh—快速集成下拉上拉刷新

来源:互联网 发布:asynchttp post json 编辑:程序博客网 时间:2024/05/01 13:06

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


0 0
原创粉丝点击