IOS MJRefresh下拉刷新的使用
来源:互联网 发布:mac 删除软件缓存 编辑:程序博客网 时间:2024/05/06 02:38
//随机数据 #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.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
- IOS MJRefresh下拉刷新的使用
- iOS 下拉刷新 MJRefresh 详解
- iOS 使用MJRefresh刷新
- MJRefresh下拉刷新框架使用
- iOS 上拉加载,下拉刷新,本人使用MJRefresh
- iOS开发---MJRefresh下拉刷新/下拉加载
- iOS 下拉刷新 上拉刷新 MJRefresh
- MJRefresh-- iOS下拉刷新第三方类库
- iOS-自定义MJRefresh下拉刷新动画
- MJRefresh的下拉刷新,UICollectionView,UItableview
- 基于MJRefresh的自定义下拉刷新
- iOS开发- MJRefresh第三方详解(下拉刷新,下拉加载)
- UITableView 上拉刷新和下拉刷新(使用MJRefresh)
- 使用MJRefresh快速集成上拉刷新及下拉刷新
- 使用MJRefresh给表格添加上拉刷新,下拉刷新
- ios封装自己的表格上/下拉刷新框架,MJRefresh框架解析
- iOS-上拉刷新下拉加载 新版MJRefresh和EGOTableViewPullRefresh
- IOS MJRefresh给tableview下拉刷新上拉加载分页
- 适配器模式【Adapter Pattern】
- Git使用笔记
- Java操作Redis
- OpenGL ES学习之三——贴图
- hdu5093 Battle ships 二分图匹配
- IOS MJRefresh下拉刷新的使用
- Cent OS 下注册Apache 为系统服务
- Nginx基础. eventfd, 异步IO 与epoll的相互协作
- Recycleview添加底部
- java四种线程池的使用
- TestNG的ISuiteListener监听器和IAlterSuiteListener监听器详解
- 外星人入侵 (Standard IO)
- MapReduce:详解Shuffle过程
- Test