为一些常用控件增加下拉刷新和上滑加载,适用于UIScrollView 、 UITableView 、 UICollectionView 、 UIWebView
下载地址:https://github.com/CoderMJLee/MJRefresh
导入方式:#import "MJRefresh.h"
github结构图
状态的控制
/** 刷新控件的状态 */
typedef NS_ENUM(NSInteger, MJRefreshState) {
/** 普通闲置状态 */
MJRefreshStateIdle = 1,
/** 松开就可以进行刷新的状态 */
MJRefreshStatePulling,
/** 正在刷新中的状态 */
MJRefreshStateRefreshing,
/** 即将刷新的状态 */
MJRefreshStateWillRefresh,
/** 所有数据加载完毕,没有更多的数据了 */
MJRefreshStateNoMoreData
};
/** 进入刷新状态 */
- (void)beginRefreshing;
- (void)beginRefreshingWithCompletionBlock:(void (^)(void))completionBlock;
/** 结束刷新状态 */
- (void)endRefreshing;
- (void)endRefreshingWithCompletionBlock:(void (^)(void))completionBlock;
/** 是否正在刷新 */
@property (assign, nonatomic, readonly, getter=isRefreshing) BOOL refreshing;
//- (BOOL)isRefreshing;
基本使用(一)下拉刷新
代码如下:
//1.block方式
// self.tableView.mj_header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{
// // 进入刷新状态后会自动调用这个block
// 重制数据操作。。。
// }];
//2.Target方式
MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(loadNewData)];
self.tableView.mj_header = header;
-(void)loadNewData{
//重制数据操作。。。
}
基本使用(二)下拉刷新head自定
MJRefresh-hread自定
//隐藏时间
header.lastUpdatedTimeLabel.hidden = YES;
// 隐藏状态
//header.stateLabel.hidden = YES;
// 自定义文字
[header setTitle:@"下拉刷新" forState:MJRefreshStateIdle];
[header setTitle:@"松手刷新" forState:MJRefreshStatePulling];
[header setTitle:@"刷新中" forState:MJRefreshStateRefreshing];
// 自定义字体大小
//header.stateLabel.font = [UIFont systemFontOfSize:15];
//header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:14];
// 自定义颜色
//header.stateLabel.textColor = [UIColor redColor];
//header.lastUpdatedTimeLabel.textColor = [UIColor blueColor];
若要添加gif图片
则不能使用MJRefreshNormalHeader
,要使用MJRefreshGifHeader
MJRefreshGifHeader *header = [MJRefreshGifHeader headerWithRefreshingTarget:self refreshingAction:@selector(loadNewData)];
// 设置普通状态的动画图片
[header setImages:idleImages forState:MJRefreshStateIdle];
// 设置即将刷新状态的动画图片(一松开就会刷新的状态)
[header setImages:pullingImages forState:MJRefreshStatePulling];
// 设置正在刷新状态的动画图片
[header setImages:refreshingImages forState:MJRefreshStateRefreshing];
基本使用(三)上滑加载
注意当没有更多数据时,应使用
[self.tableView.mj_footer endRefreshingWithNoMoreData];
代码如下:
//自动回弹样式
//MJRefreshBackNormalFooter *footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(loadMoreData)];
MJRefreshAutoNormalFooter *footer = [MJRefreshAutoNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(loadMoreData)];
self.tableView.mj_footer = footer;
基本使用(四)上滑加载footer自定
//自动刷新,默认为YES
footer.automaticallyRefresh = NO;
// 隐藏刷新状态的文字
footer.stateLabel.hidden = YES;
// 自定义文字
[footer setTitle:@"下拉或单击刷新" forState:MJRefreshStateIdle];
[footer setTitle:@"正在加载" forState:MJRefreshStateRefreshing];
[header setTitle:@"松手加载" forState:MJRefreshStatePulling];
[footer setTitle:@"已无数据" forState:MJRefreshStateNoMoreData];
// 自定义字体大小
footer.stateLabel.font = [UIFont systemFontOfSize:15];
// 自定义颜色
footer.stateLabel.textColor = [UIColor blueColor];
// 隐藏当前的上拉刷新控件
self.tableView.footer.hidden = YES;
// 设置刷新图片
[footer setImages:images forState:MJRefreshStateRefreshing];