自定义下拉刷新控件-CBStoreHouseRefreshControl
本文转载至 http://www.cocoachina.com/ios/20141110/10177.html
iOS开发自定义刷新CBStoreHouseRefres
这是一款在Storehouse启发下创作出来的控件,下拉刷新的时候可以完全定制自己想要的效果。来看效果图:

通过plist文件你可以使用任何想要的形状,下面这张是作者所在公司的logo:

安装
CBStoreHouseRefreshControl依赖于CocoaPods,通过在你的Podfile中添加下面这行命令来安装:
| 
 1 
 | 
pod "CBStoreHouseRefreshControl" | 
当然你也可以直接把CBStoreHouseRefreshControl (.h .m) 和 BarItem (.h .m)文件直接拖到你的工程中去。
用法
只需要简单的使用下面这个方法你就可以将其添加到你的UIScrollView中,像使用UITableView和UICollectionView那样:
| 
 1 
2 
3 
4 
5 
 | 
+ (CBStoreHouseRefreshControl*)attachToScrollView:(UIScrollView *)scrollView                                           target:(id)target                                    refreshAction:(SEL)refreshAction                                            plist:(NSString *)plist;self.storeHouseRefreshControl = [CBStoreHouseRefreshControl attachToScrollView:self.tableView target:self refreshAction:@selector(refreshTriggered:) plist:@"storehouse"]; | 
还可以设定更多的参数:
| 
 1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
 | 
+ (CBStoreHouseRefreshControl*)attachToScrollView:(UIScrollView *)scrollView                                           target:(id)target                                    refreshAction:(SEL)refreshAction                                            plist:(NSString *)plist                                            color:(UIColor *)color                                        lineWidth:(CGFloat)lineWidth                                       dropHeight:(CGFloat)dropHeight                                            scale:(CGFloat)scale                             horizontalRandomness:(CGFloat)horizontalRandomness                          reverseLoadingAnimation:(BOOL)reverseLoadingAnimation                          internalAnimationFactor:(CGFloat)internalAnimationFactor;self.storeHouseRefreshControl = [CBStoreHouseRefreshControl attachToScrollView:self.tableView target:self refreshAction:@selector(refreshTriggered:) plist:@"storehouse" color:[UIColor whiteColor] lineWidth:1.5 dropHeight:80 scale:1 horizontalRandomness:150 reverseLoadingAnimation:YES internalAnimationFactor:0.5]; | 
接下来就是在你的UIViewController中实现UIScrollViewDelegate,假如实现过就不必了。然后在刷新控件里传递调用。
| 
 1 
2 
3 
4 
5 
6 
7 
8 
 | 
- (void)scrollViewDidScroll:(UIScrollView *)scrollView{    [self.storeHouseRefreshControl scrollViewDidScroll];}- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{    [self.storeHouseRefreshControl scrollViewDidEndDragging];} | 
最后,确保你已经实现了之前用来监听刷新触发器的refreshAction。
| 
 1 
2 
3 
4 
5 
6 
 | 
- (void)refreshTriggered{    //call your loading method here    //Finshed loading the data, reset the refresh control    [self.storeHouseRefreshControl finishedLoading];} | 
想了解更多请看源码。
使用自定义图形
CBStoreHouseRefreshControl中的图形使用BarItem来实现动画,每个BarItem会有自己的动画,你仅需要使用plist文件为其指定开始点starPoint和结束点endPoint。
所有的BarItem共享的是以屏幕左上角为原点的坐标系,比如你要绘制一个正方形的话,plist文件就该这么写:

效果如下:

注意
确保为开始点startPoint和结束点endPoint都设置了正确的值。
确保坐标的书写是{x,y}的形式
使用loading或者是highlight的动画都会使得plist中所有BarItem按顺序高亮,而使用reverseLoadingAnimation则相反。
@isaced同学提到,使用PaintCode来生成开始点和结束点会更轻松得多,具体介绍看这里。
配置方法
color参数用于设置Baritem的颜色
lineWidth则可以设置Baritem的宽度
dropHeight用来设置控件的高度
scale可以设置控件比例
horizontalRandomness能改变Baritme的散开方式
reverseLoadAnimation设置为YES的话可以Baritem的高亮顺序会颠倒
internalAnimationFactor用于改变Baritem动画时间,如果设置为1,则所有Baritem一同消失或者出现。
自定义下拉刷新控件-CBStoreHouseRefreshControl的更多相关文章
- 基于PtrFrameLayout实现自定义仿京东下拉刷新控件
		
前言 最近基于项目需要,使用PtrFrameLayout框架实现了自定义的下拉刷新控件,大体效果类似于京东APP的下拉刷新动态效果.在这里和大家分享一下具体的思路和需要注意的地方,以便帮助有类似开发和 ...
 - android官方下拉刷新控件SwipeRefreshLayout的使用
		
可能开发安卓的人大多数都用过很多下拉刷新的开源组件,但是今天用了官方v4支持包的SwipeRefreshLayout觉得效果也蛮不错的,特拿出来分享. 简介:SwipeRefreshLayout组件只 ...
 - [Android]下拉刷新控件RefreshableView的实现
		
以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/4172483.html 需求:自定义一个ViewGroup,实现 ...
 - Android仿苹果版QQ下拉刷新实现(一) ——打造简单平滑的通用下拉刷新控件
		
前言: 忙完了结婚乐APP的开发,终于可以花一定的时间放在博客上了.好了,废话不多说,今天我们要带来的效果是苹果版本的QQ下拉刷新.首先看一下目标效果以及demo效果: 因为此效果实现的步骤 ...
 - Android下拉刷新控件--PullToRefresh的简单使用
		
Android中很多时候都会用到上下拉刷新,这是一个很常用的功能,Android的v4包中也为我们提供了一种原生的下拉刷新控件--SwipeRefreshLayout,可以用它实现一个简洁的刷新效果, ...
 - Android 解决下拉刷新控件和ScrollVIew的滑动冲突问题。
		
最近项目要实现ScrollView中嵌套广告轮播图+RecyleView卡片布局,并且RecyleView按照header和内容的排列样式,因为RecyleView的可扩展性很强,所以我毫无疑问的选择 ...
 - Android——谷歌官方下拉刷新控件SwipeRefreshLayout(转)
		
转自:http://blog.csdn.net/zouzhigang96/article/details/50476402 版权声明:本文为博主原创文章,未经博主允许不得转载. 前言: 如今谷歌推出了 ...
 - android SwipeRefreshLayout google官方下拉刷新控件
		
下拉刷新功能之前一直使用的是XlistView很方便我前面的博客有介绍 SwipeRefreshLayout是google官方推出的下拉刷新控件使用方法也比较简单 今天就来使用下SwipeRefres ...
 - Android PullToRefresh下拉刷新控件的简单使用
		
PullToRefresh这个开源库早就听说了,不过一直没用过.作为一个经典的的开源库,我觉得还是有必要认识一下. 打开github上的网址:https://github.com/chrisbanes ...
 
随机推荐
- HDU 6229 Wandering Robots(2017 沈阳区域赛  M题,结论)
			
题目链接 HDU 6229 题意 在一个$N * N$的格子矩阵里,有一个机器人. 格子按照行和列标号,左上角的坐标为$(0, 0)$,右下角的坐标为$(N - 1, N - 1)$ 有一个机器人, ...
 - [Python Cookbook] Numpy: Iterating Over Arrays
			
1. Using for-loop Iterate along row axis: import numpy as np x=np.array([[1,2,3],[4,5,6]]) for i in ...
 - Fennec VS. Snuke --AtCoder
			
题目描述 Fennec and Snuke are playing a board game.On the board, there are N cells numbered 1 through N, ...
 - rsync 备份 CENTOS 系统!
			
rsync是一个非常优秀的文件同步工具,从它的名字可以看出,它支持远程同步.当然,在备份我的桌面系统时,只需要用到它的本地同步功能就行了.之所以选择rsync,是因为它具有如下优点:在备份还原过程中, ...
 - Scala之Future超时
			
最近在开发中使用akka http进行请求,返回的是一个future,并且要对future进行超时设置,不知怎么设置,因此学习了下. 一.Future阻塞 首先,scala中的future不支持内置超 ...
 - SecureCRT介绍、安装、使用(转)
			
http://blog.csdn.net/liang19890820/article/details/49701429 简介 SecureCRT是一款支持SSH(SSH1和SSH2)的终端仿真程序,简 ...
 - GCD和信号量
			
GCD 概念不多说,直接上代码.话说也不是什么高深的东东,不过极大简化了代码,一目了然.后面对信号量的记录也采用了相同的原理. //抛出线程 dispatch_async(dispatch_get_g ...
 - 【IntelliJ IDEA】Debug调试的使用记录
			
Debug调试是否能行云流水的使用,是鉴定你会不会使用一个IDE的最基本的标准. 今天再这里把Idea的debug使用流程走一遍. ================================== ...
 - 测试Apache服务器及httpd: Could not reliably determine the server's fully qualified domain name解决办法
			
测试Apache服务器: 重启apache: sudo /usr/local/apache/bin/apachectl restart 若出现错误: httpd: Could not reliably ...
 - 穿透内网防线,USB自动渗透手法总结
			
USB(Universal Serial Bus)原意是指通用串行总线,是一个外部总线标准,用于规范电脑与外部设备的连接和通讯,这套标准在1994年底由英特尔.康柏.IBM.Microsoft等多家公 ...