https://github.com/Sephiroth87/ODRefreshControl 类似刷新控件,类似qq动画的那种刷新。
一.下载第三方库
https://github.com/samvermette/SVPullToRefresh
二.使用方法
1.导入下载的第三方库
2.导入头文件
在需要的类里导入这一个头文件就能,同时使用下拉刷新,上拉加载
#import "SVPullToRefresh.h"
3.下拉刷新
- [_tableView addPullToRefreshWithActionHandler:^{
- //数据的加载,和表的刷新的代码。
- //全部需要我们自己写
- // [self refreshTableView];
- //3秒后调用refreshTableView方法
- [self performSelector:@selector(refreshTableView) withObject:nil afterDelay:1.0];
- // //风火轮的动画还需要我们手动的停止
- // [_tableView.pullToRefreshView stopAnimating];
- }];
4.上拉加载
- [_tableView addInfiniteScrollingWithActionHandler:^{
- [self performSelector:@selector(insertDate) withObject:nil afterDelay:3.0];
- }];
5.自定义显示的文字
- [_tableView.pullToRefreshView setTitle:@"下拉以刷新" forState:SVPullToRefreshStateTriggered];
- [_tableView.pullToRefreshView setTitle:@"刷新完了呀" forState:SVPullToRefreshStateStopped];
- [_tableView.pullToRefreshView setTitle:@"不要命的加载中..." forState:SVPullToRefreshStateLoading];
6.自定义刷新时的动画
- UIView* view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 200, 40)];
- view.backgroundColor = [UIColor blueColor];
- [UIView beginAnimations:nil context:nil];
- [UIView setAnimationDuration:3];
- view.alpha = 0.5 ;
- [UIView commitAnimations];
- [_tableView.pullToRefreshView setCustomView:view forState:SVPullToRefreshStateAll];
当然可以把view换成imageView等控件实现动画效果
7.实现刷新和加载的两个方法
- - (void)refreshTableView
- {
- }
- - (void)insertDate
- {
- }
三.注意事项
iOS7和我们的下拉刷新库有冲突,因为都是对contentOffset进行操作,解决冲突,有两种做法
方法1:禁用navgationbar的半透明效果,还原至iOS6中的效果
- self.navigationController.navigationBar.translucent = NO;
方法2:禁止系统自己修改contentOffset,然后修改tableView的frame
automaticallyAdjustsScrollViewInsets 这个属性,只有iOS7以后才能用,所以如果要兼容iOS6,在iOS6运行,我们需要判断一下能不能使用这个属性或者当前的系统版本
最终代码为:
- if ([[UIDevice currentDevice].systemVersion floatValue] >= 7.0)
- {
- self.automaticallyAdjustsScrollViewInsets = NO;
- _tableView.frame = CGRectMake(0, 64, 320, self.view.bounds.size.height - 64);
- };