【一】常见用法
最原始的用法,耦合度低,但是不能统一管理。我们需要在每一个控制器都写以下代码,很繁琐,以后项目修改起来更繁琐,得一个控制器一个控制器的去定位、修改。
1.1 使用默认刷新(耦合度底,但是想统一修改起来特别麻烦)
self.tableVIEw.mj_header = [MJRefreshnormalheader headerWithrefreshingBlock:^{//在这里执行刷新 *** 作}];self.tableVIEw.mj_header = [MJRefreshnormalheader headerWithrefreshingTarget:self refreshingAction:@selector(刷新方法)];
1.2 自定义刷新(耦合度底,但是想统一修改起来特别麻烦)
//1.2.1新建一个自定义刷新MJRefreshnormalheader *customref =[MJRefreshnormalheader headerWithrefreshingBlock:^{//1.2.2在这里执行刷新 *** 作}];//1.2.3 自定义刷新状态文字[customref setTitle:@"普通闲置状态" forState:MJRefreshStateIDle];[customref setTitle:@"松开就可以进行刷新的状态" forState:MJRefreshStatePulling];[customref setTitle:@"正在刷新中的状态" forState:MJRefreshStateRefreshing];[customref setTitle:@"即将刷新的状态" forState:MJRefreshStateWillRefresh];[customref setTitle:@"所有数据加载完毕,没有更多的数据了" forState:MJRefreshStateNoMoreData];//1.2.4添加下拉刷新self.tableVIEw.mj_header = customref;//一些其他属性设置/*// 设置字体customref.stateLabel.Font = [UIFont systemFontOfSize:15];customref.lastUpdatedTimeLabel.Font = [UIFont systemFontOfSize:14];// 设置颜色customref.stateLabel.textcolor = [UIcolor redcolor];customref.lastUpdatedTimeLabel.textcolor = [UIcolor bluecolor];// 隐藏时间customref.lastUpdatedTimeLabel.hIDden = YES;// 隐藏状态customref.stateLabel.hIDden = YES;// 设置自动切换透明度(在导航栏下面自动隐藏)customref.automaticallyChangeAlpha = YES;*/
【二】正确用法(统一管理项目所有下拉刷新控件)
@H_404_30@一共有6种刷新对象(图片末尾带红色的都是)。
假如我们想实现默认的下拉刷新,
【2.1】只要新建一个对象,
继承自MJRefreshnormalheader,
#import "MJRefreshnormalheader.h"@interface HSnormalheader : MJRefreshnormalheader@end
【2.2】然后重写方法- (voID)prepare,重写后记得实现[super prepare],
#import "HSnormalheader.h"@implementation HSnormalheader#pragma mark - 重写父类的方法- (voID)prepare{[super prepare];//所有的自定义东西都放在这里[self setTitle:@"普通闲置状态" forState:MJRefreshStateIDle];[self setTitle:@"松开就可以进行刷新的状态" forState:MJRefreshStatePulling];[self setTitle:@"正在刷新中的状态" forState:MJRefreshStateRefreshing];[self setTitle:@"即将刷新的状态" forState:MJRefreshStateWillRefresh];[self setTitle:@"所有数据加载完毕,没有更多的数据了" forState:MJRefreshStateNoMoreData];//一些其他属性设置/*// 设置字体self.stateLabel.Font = [UIFont systemFontOfSize:15];self.lastUpdatedTimeLabel.Font = [UIFont systemFontOfSize:14];// 设置颜色self.stateLabel.textcolor = [UIcolor redcolor];self.lastUpdatedTimeLabel.textcolor = [UIcolor bluecolor];// 隐藏时间self.lastUpdatedTimeLabel.hIDden = YES;// 隐藏状态self.stateLabel.hIDden = YES;// 设置自动切换透明度(在导航栏下面自动隐藏)self.automaticallyChangeAlpha = YES;*/}//如果需要自己重新布局子控件- (voID)placeSubvIEws{[super placeSubvIEws];//如果需要自己重新布局子控件,请在这里设置//箭头// self.arrowVIEw.center =}@end
然后我们再对应的控制器实现刷新只要这样既可:
【2.3】引入自定义对象,比如叫HSnormalheader(继承自MJRefreshnormalheader),
#import "HSnormalheader.h"
【2.4】在需要下拉刷新的控制器这样实现既可
self.tableVIEw.mj_header = [HSnormalheader headerWithrefreshingBlock:^{//刷新请求}];
同理,对应的下拉动画只需新建对象继承自MJRefreshGifheader
#pragma mark - 重写父类的方法- (voID)prepare{[super prepare];// 设置普通状态的动画图片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];}[self setimages:IDleImages forState:MJRefreshStateIDle];// 设置即将刷新状态的动画图片(一松开就会刷新的状态)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];}[self setimages:refreshingImages forState:MJRefreshStatePulling];// 设置正在刷新状态的动画图片[self setimages:refreshingImages forState:MJRefreshStateRefreshing];//隐藏时间self.lastUpdatedTimeLabel.hIDden = YES;//隐藏状态self.stateLabel.hIDden = YES;}
至此,可以说MJRefresh的常用主要功能都已经被你掌握完毕,如需掌握更多请去参考MJ的地址
https://github.com/CoderMJLee/MJRefresh
本案例的demo地址为https://github.com/wolfhous/HSUpdateApp
注:里面还包含一个的自动检测更新,大家觉得好用请加星哦!
@H_404_30@以上所述是小编给大家介绍的AndroID开发中MJRefresh自定义刷新动画效果,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对编程小技巧网站的支持!
总结以上是内存溢出为你收集整理的Android开发中MJRefresh自定义刷新动画效果全部内容,希望文章能够帮你解决Android开发中MJRefresh自定义刷新动画效果所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)