MJRefresh 下拉刷新
MJRefresh 下拉刷新
pod 'MJRefresh', '~> 3.1.15.1'
#import <MJRefresh/MJRefresh.h>
MJRefresh 使用了UIScrollView Category
结构看图
结构图一、下拉刷新
默认使用MJRefreshNormalHeader 初始化方法:
1、
+ (instancetype)headerWithRefreshingBlock:(MJRefreshComponentRefreshingBlock)refreshingBlock;
+ (instancetype)headerWithRefreshingTarget:(id)target refreshingAction:(SEL)action;
MJRefreshNormalHeader *head = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(SEL)];
MJRefreshNormalHeader *head = [MJRefreshNormalHeader headerWithRefreshingBlock:^{
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[self.tableView reload];
[self.tableView.mj_header endRefreshing];//结束刷新动画
});
}];
选择中文语言。默认带箭头,描述文字,最后刷新时间。
也可以根据状态自定义,状态枚举
/** 设置state状态下的文字 */
- (void)setTitle:(NSString *)title forState:(MJRefreshState)state;
/** 刷新控件的状态 */
typedef NS_ENUM(NSInteger, MJRefreshState) {
/** 普通闲置状态 */
MJRefreshStateIdle = 1,
/** 松开就可以进行刷新的状态 */
MJRefreshStatePulling,
/** 正在刷新中的状态 */
MJRefreshStateRefreshing,
/** 即将刷新的状态 */
MJRefreshStateWillRefresh,
/** 所有数据加载完毕,没有更多的数据了 */
MJRefreshStateNoMoreData
};
eg:
[header setTitle:@"松开刷新数据" forState:MJRefreshStatePulling];
最后设置需要下拉刷新的控件,
self.tableView.mj_header = header.
2、添加吃包子GIF动画
MJRefreshGifHeader *gifHeader = [MJRefreshGifHeader headerWithRefreshingTarget:self refreshingAction:@selector(mjRefreshHeader)];
设置不同状态的imageArray
- (void)setImages:(NSArray *)images forState:(MJRefreshState)state;
NSArray *idleImageAry = [self IdleImageArray];
NSArray *refreshImageAry = [self PullRefreshingImageAry];
[gifHeader setImages:idleImageAry forState:MJRefreshStateIdle];
[gifHeader setImages:refreshImageAry forState:MJRefreshStatePulling];
[gifHeader setImages:refreshImageAry forState:MJRefreshStateRefreshing];
self.tableView.mj_header = gifHeader;
图片资源
/** 设置普通状态的动画图片 */
- (NSArray *)IdleImageArray{
NSMutableArray *idleImages = [NSMutableArray array];
for (NSUInteger i = 1; i<=60; i++) {
UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:@"dropdown_anim__000%zd", i]];
[idleImages addObject:image];
}
return idleImages;
}
/** 设置即将刷新状态的动画图片(一松开就会刷新的状态) 设置正在刷新状态的动画图片 */
- (NSArray *)PullRefreshingImageAry
{
NSMutableArray *refreshingImages = [NSMutableArray array];
for (NSUInteger i = 1; i<=3; i++) {
UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:@"dropdown_loading_0%zd", i]];
[refreshingImages addObject:image];
}
return refreshingImages;
}