IOS MJRefresh下拉刷新的使用

//随机数据  
#define NumData [NSString stringWithFormat:@"我是随机数据%d", arc4random_uniform(1000)]  
  
  
  
@interface TableView ()<UITableViewDataSource, UITableViewDelegate>  
{  
    UITableView *_tableView;;  
}  
  
//随机数据  
@property (strong, nonatomic) NSMutableArray *data;  
  
//普通刷新状态下得图片  
@property (nonatomic, strong) NSMutableArray *normalImages;  
  
//正在刷新状态下得图片  
@property (nonatomic, strong) NSMutableArray *refreshImages;  
  
  
  
@end  
  
@implementation TableView  
  
- (void)viewDidLoad {  
    [super viewDidLoad];  
      
//    0.设置表视图  
    [self _initTableView];  
      
//    1.默认样式  
    [self defaultStyle];  
  
//    2.图片动画样式  
//    [self imageAnimationStyle];  
      
//    3.上拉刷新控件自动回弹  
//    [self footerAutoBackStyle];  
      
//    4.上拉刷新控件自动回弹(有图片动画)  
//    [self footerBackImageAnimationStyle];  
      
      
      
}  
  
//初始化表视图  
- (void)_initTableView  
{  
    //    设置tableview  
    _tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 375, 667) style:UITableViewStyleGrouped];  
    _tableView.frame = CGRectMake(0, 0, 375, 667);  
      
    [self.view addSubview:_tableView];  
      
    _tableView.delegate = self;  
    _tableView.mj_footer.ignoredScrollViewContentInsetBottom = iPhoneX ? 34 : 0;
    _tableView.dataSource = self;  
}  
  
#pragma mark - 数据懒加载  
- (NSMutableArray *)data  
{  
    if (_data == nil) {  
        _data = [[NSMutableArray alloc] init];  
    }  
      
    return _data;  
}  
  
//默认刷新状态下的图片  
- (NSMutableArray *)normalImages  
{  
    if (_normalImages == nil) {  
        _normalImages = [[NSMutableArray alloc] init];  
          
//        循环添加图片  
        for (NSUInteger i = 1; i<=60; i++) {  
            UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:@"dropdown_anim__000%ld", i]];  
            [self.normalImages addObject:image];  
        }  
          
    }  
      
    return _normalImages;  
}  
  
//正在刷新状态下的图片  
- (NSMutableArray *)refreshImages  
{  
    if (_refreshImages == nil) {  
        _refreshImages = [[NSMutableArray alloc] init];  
          
//                循环添加图片  
        for (NSUInteger i = 1; i<=3; i++) {  
            UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:@"dropdown_loading_0%ld", i]];  
            [self.refreshImages addObject:image];  
        }  
    }  
      
    return _refreshImages;  
}  
  
/** 
  
 支持下面控件的刷新: 
  
 UIScrollView、UITableView、UICollectionView 
  
 使用类: 
  
 1.下拉更新 
 MJRefreshNormalHeader:下拉默认样式 
 MJRefreshGifHeader:下拉 有图片动画 
  
 2.上拉更新 
 MJRefreshAutoNormalFooter:上拉默认样式 
 MJRefreshAutoGifFooter:上拉 有图片动画 
  
 3.上拉回弹 
 MJRefreshBackNormalFooter:上拉回弹默认样式 
 MJRefreshBackGifFooter:上拉回弹 有图片动画 
  
 4.UIScrollView类目 
 UIScrollView+MJRefresh:设置刷新样式(设置上拉样式时能刷新数据,但是看不到刷新样式,样式不能设置) 
 
 */  
  
  
  
#pragma mark - 默认样式  
  
- (void)defaultStyle  
{  
//    下拉  
    _tableView.header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{  
          
        //加载数据  
        [self headerLoadData];  
          
    }];  
      
//    进入刷新状态  
    [_tableView.header beginRefreshing];  
      
      
//    上拉  
    MJRefreshAutoNormalFooter *footer = [MJRefreshAutoNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(footerLoadData)];  
      
    _tableView.footer = footer;  
}  
  
#pragma mark - 图片动画样式  
  
- (void)imageAnimationStyle  
{  
    MJRefreshGifHeader *header = [MJRefreshGifHeader headerWithRefreshingTarget:self refreshingAction:@selector(headerLoadData)];  
      
//======================================下拉 对象属性设置============================================  
  
//     (1)设置普通状态的动画图片  
    [header setImages:self.normalImages forState:MJRefreshStateIdle];  
      
//     (2)设置即将刷新状态的动画图片  
    [header setImages:self.refreshImages forState:MJRefreshStatePulling];  
      
//     (3)设置正在刷新状态的动画图片  
    [header setImages:self.refreshImages forState:MJRefreshStateRefreshing];  
      
//     (4)设置自动切换透明度,下拉时alpha属性从0-1  
    header.autoChangeAlpha = YES;  
      
//     (5)隐藏文字  
//    header.stateLabel.hidden = YES;  
      
//     (6)隐藏刷新时间  
//    header.lastUpdatedTimeLabel.hidden = YES;  
      
//     (7)自定义文字  
      
        //普通状态下的文字  
    [header setTitle:@"下拉更新数据" forState:MJRefreshStateIdle];  
        //松开就可以刷新状态下的文字  
    [header setTitle:@"松手要刷新了" forState:MJRefreshStatePulling];  
        //正在舒心状态下得文字  
    [header setTitle:@"正在刷新" forState:MJRefreshStateRefreshing];  
      
        //设置字体和颜色  
    header.stateLabel.font = [UIFont systemFontOfSize:14];  
    header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:12];  
    header.stateLabel.textColor = [UIColor redColor];  
    header.lastUpdatedTimeLabel.textColor = [UIColor orangeColor];  
      
      
//    设置header  
    [header beginRefreshing];  
    _tableView.header = header;  
      
//========================上拉 对象属性设置==============================  
      
    MJRefreshAutoGifFooter *footer = [MJRefreshAutoGifFooter footerWithRefreshingTarget:self refreshingAction:@selector(footerLoadData)];  
  
      
    //    (1)设置正在刷新图片  
    [footer setImages:self.refreshImages duration:3 forState:MJRefreshStateRefreshing];  
      
    //    (2)隐藏刷新状态文字(上拉时只有图片)  
    //    footer.refreshingTitleHidden = YES;  
      
    //    !!!刷新后提示没有更多数据  
    //    [footer noticeNoMoreData];  
      
    //    (3)自定义文字  
    //普通状态下的文字  
    [footer setTitle:@"上拉更新数据" forState:MJRefreshStateIdle];  
    //正在刷新状态下的文字  
    [footer setTitle:@"加载数据中..." forState:MJRefreshStateRefreshing];  
      
    //    !!!!没有更多数据了(在没有数据可加载时设置此属性)  
    //    [footer setTitle:@"没有更多数据了" forState:MJRefreshStateNoMoreData];  
      
    //设置字体和颜色  
    footer.stateLabel.font = [UIFont systemFontOfSize:14];  
    footer.stateLabel.textColor = [UIColor redColor];  
      
      
    _tableView.footer = footer;  
      
    //    !!!!隐藏上拉控件  
    //    self.tableView.footer.hidden = YES;  
      
//===============================================================================================  
      
}  
  
  
  
#pragma mark - 上拉自动回弹隐藏控件样式  
  
- (void)footerAutoBackStyle  
{  
    MJRefreshBackNormalFooter *footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(footerLoadData)];  
      
//    设置字体颜色  
    footer.stateLabel.textColor = [UIColor redColor];  
      
    _tableView.footer = footer;  
}  
  
#pragma mark - 上拉自动回弹隐藏控件样式(图片动画)  
  
- (void)footerBackImageAnimationStyle  
{  
    MJRefreshBackGifFooter *footer = [MJRefreshBackGifFooter footerWithRefreshingTarget:self refreshingAction:@selector(footerLoadData)];  
      
    //     (1)设置普通状态的动画图片  
    [footer setImages:self.normalImages forState:MJRefreshStateIdle];  
      
    //     (2)设置即将刷新状态的动画图片  
    [footer setImages:self.refreshImages forState:MJRefreshStatePulling];  
      
    //     (3)设置正在刷新状态的动画图片  
    [footer setImages:self.refreshImages forState:MJRefreshStateRefreshing];  
      
    _tableView.footer = footer;  
}  
  
  
  
#pragma mark - UITableView代理方法  
  
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {  
      
    
    return self.data.count;  
      
}  
  
  
  
  
  
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath  
  
{  
      
    NSString *ID = @"cell";  
      
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];  
      
    if (cell == nil) {  
          
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:ID];  
          
    }  
      
      
    cell.textLabel.text = self.data[indexPath.row];  
      
    return cell;  
      
}  
  
  
  
#pragma mark - 加载数据 2秒后退出刷新  
  
//加载数据 3秒后退出刷新  
  
- (void)headerLoadData  
  
{  
//    模拟添加数据  
    for (int i = 0; i<5; i++) {  
        [self.data addObject:NumData];  
    }  
      
//    3秒后退出刷新  
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(22 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{  
          
//        刷新数据  
        [_tableView reloadData];  
//        停止刷新  
        [_tableView.header endRefreshing];  
          
    });  
      
}  
  
- (void)footerLoadData  
  
{  
    //    模拟添加数据  
    for (int i = 0; i<5; i++) {  
        [self.data addObject:NumData];  
    }  
      
    //    3秒后退出刷新  
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(22 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{  
          
        //        刷新数据  
        [_tableView reloadData];  
        //        停止刷新  
        [_tableView.footer endRefreshing];  
          
        //    刷新后提示没有更多数据  
//        [self.tableView.footer noticeNoMoreData];  
  
          
    });  
      
}  

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值