MJRefresh自定义刷新动画
【一】常见用法
最原始的用法,耦合度低,但是不能统一管理。我们需要在每一个控制器都写以下代码,很繁琐,以后项目修改起来更繁琐,得一个控制器一个控制器的去定位、修改。
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;
*/
【二】正确用法(统一管理项目所有下拉刷新控件)
一共有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 = ; i<=; 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 = ; i<=; 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
注:里面还包含一个的自动检测更新,大家觉得好用请加星哦!
MJRefresh自定义刷新动画的更多相关文章
- 使用MJRefresh自定义下拉刷新,上拉加载动画
有时候我们需要自己设置下拉刷新,上拉加载动画的实现,这里主要是记录下使用MJRefresh自定义下拉刷新,上拉加载动画..... 下拉刷新我们只需要继承MJRefreshGifHeader即可: 实现 ...
- PullToRrefresh自定义下拉刷新动画
首先,下载著名的刷新框架https://github.com/chrisbanes/Android-PullToRefresh,其中simple为demo,library和extras作为项目包导入到 ...
- Android PullToRrefresh 自定义下拉刷新动画 (listview、scrollview等)
PullToRefreshScrollView 自定义下拉刷新动画,只需改一处. 以下部分转载自http://blog.csdn.net/superjunjin/article/details/450 ...
- 自定义带动画的Toast
一.style样式: 1. // 移动和透明渐变结合的动画 <style name="anim_view"> <item name="@ ...
- Android 自定义波浪动画 --"让进度浪起来~"
原文链接:http://www.jianshu.com/p/0e25a10cb9f5 一款效果不错的动画,实现也挺简单的,推荐阅读学习~ -- 由 傻小孩b 分享 waveview <Andro ...
- jQuery中自定义简单动画的实现
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/stri ...
- Android 自定义帧动画
Android 自定义帧动画 Android L : Android Studio 帧动画 和gif图片类似,顺序播放准本好的图片文件:图片资源在xml文件中配置好 将图片按照预定的顺序一张张切换,即 ...
- ViewPager无限轮播与自定义切换动画
一直在寻求一个能用得长久的ViewPager,寻寻觅觅终于发现,ViewPager有这一个就够了. 注:并非完全原创 先看一下效果: 淡入淡出: 旋转: 无限轮播的ViewPager 主要设计思路(以 ...
- XamarinAndroid组件教程RecylerView自定义适配器动画
XamarinAndroid组件教程RecylerView自定义适配器动画 如果RecyclerViewAnimators.Adapters命名空间中没有所需要的适配器动画,开发者可以自定义动画.此时 ...
随机推荐
- 10套免费的 Photoshop UI 元素以及 PSD 素材
免费的 PSD 用户界面工具包以及可以编辑 Photoshop PSD 文件,有你需要的设计漂亮的用户界面和惊人使用体验.这些用户界面工具包可有免费下载,可随意定制的,而且这些 PSD 分层素材文件组 ...
- 转 Windows+VS2013爆详细Caffe编译安装教程
1. 安装cuda Cuda是英伟达推出的GPU加速运算平台 我这里安装的是cuda7.5,已经安装过的忽略,还没有安装过的这里有安装教程.windows下面安装还是非常简单的. 点击打开链接 ...
- DNS解析全过程及原理
DNS解析原理及过程. 当用户访问我们网站一个网页时,他需要经过以下步骤: 1)找到这个网页的存放服务器: 2)服务器将用户的请求信息接入: 3)服务器通过文件路径(URL)查找用户请求网页: 4)用 ...
- Javascript 布尔操作符总结
在一门编程语言中,布尔操作符的重要性堪比相等操作符.如果没有测试两个值关系的能力,那么诸如if...else和循环之类的语句就不会有用武之地了.在像javascript这样弱类型语言更有其妙用,让我们 ...
- ES6模块的import和export用法总结
ES6之前以前出现了js模块加载的方案,最主要的是CommonJS和AMD规范.commonjs前者主要应用于服务器,实现同步加载,如nodejs.AMD规范应用于浏览器,如requirejs,为异步 ...
- DirectShow .Net 实现视频
DirectShow .Net 实现视频 .获取视频采集设备IBaseFilter接口对象的方法 //获取所有视频设备名称 public ArrayList GetVideoInputDevice() ...
- SQL Server 统计信息
SELECT * FROM SYS.stats _WA_Sys_00000009_00000062:统计对象的名称.不同的机器名称不同,自动创建的统计信息都以_WA_Sys开头,00000009表示的 ...
- NoSQL数据库介绍
NoSQL在2010年风生水起,大大小小的Web站点在追求高性能高可靠性方面,不由自主都选择了NoSQL技术作为优先考虑的方面.今年伊始,InfoQ中文站有幸邀请到凤凰网的孙立先生,为大家分享他之于N ...
- MVP 2015社区大讲堂之:在ASP.NET应用中执行后台任务
昨天下午,在微软的MVP 2015社区大讲堂上给大家分享了一个题目:在ASP.NET应用中执行后台任务.这是一点都不高大上,并且还有点土气的技术分享.不过我相信很多人都遇到过这样的问题. 虽然是一个很 ...
- C#Winform VScrollBar+Pannel自定义列表控件(原)
该控件的主要实现思路是用的objective-c中的自定义控件思路,主视图中放子视图 效果图 (窗体调用代码) public partial class Form1 : RibbonForm { Li ...