【开源框架EGOTableViewPullRefresh的研究】
EGOTableViewPullRefresh:点击打开链接https://github.com/enormego/EGOTableViewPullRefresh
RootViewController.m中的
//把EGORefreshTableHeaderView *view接到tableview的上面,所以坐标是(0,-460,320,460),这样下拉出来的就是EGORefreshTableHeaderView *view的内容
EGORefreshTableHeaderView *view = [[EGORefreshTableHeaderViewalloc]initWithFrame:CGRectMake(0.0f,0-self.tableView.bounds.size.height,self.view.frame.size.width,self.tableView.bounds.size.height)];
整个下拉刷新的过程:
初始化设置,上面的标签显示刷新的状态,下面的标签显示更新时间,箭头和滚动的圆圈(UIActivityIndicatorView),并把状态设置为正常EGOOPullRefreshNormal
开始拖动
把状态设置为正在下拉 EGOOPullRefreshPulling
结束拖动
触发刷新
表视图重新加载数据
设置正在加载状态
scrollview的contentInset属性增加滚动区域上方60点
表视图数据加载完成
scrollview的contentInset属性增加滚动区域上方0点
设置正常状态
在下面这个委托里,一定要用线程的方法执行doneLoadingTableViewData,不然的话就会出现下拉出来的就不会再缩回去了,而且圆圈一直在转。
- (void)egoRefreshTableHeaderDidTriggerRefresh:(EGORefreshTableHeaderView*)view{
NSLog(@"egoRefreshTableHeaderDidTriggerRefresh");
[selfreloadTableViewDataSource];
[selfperformSelector:@selector(doneLoadingTableViewData)withObject:nil afterDelay:3.0];
//如果让上面的方法立即执行,下拉出来的就不会再缩回去了,而且圆圈一直在转。这时,它最终转到了 - (void)egoRefreshScrollViewDidScroll:(UIScrollView *)scrollView中的 scrollView.contentInset = UIEdgeInsetsMake(offset, 0.0f, 0.0f, 0.0f);这一行代码,所以圆圈缩不回去,把offset改为0就缩回去了
// [self doneLoadingTableViewData];
}
多线程执行过程:
结束拖动
触发刷新
表视图重新加载数据
设置正在加载状态
scrollview的contentInset属性增加滚动区域上方60点
表视图数据加载完成
scrollview的contentInset属性增加滚动区域上方0点
设置正常状态
多线程:[self performSelector:@selector(doneLoadingTableViewData) withObject:nil afterDelay:3.0];
egoRefreshScrollViewDidEndDragging
egoRefreshTableHeaderDidTriggerRefresh
reloadTableViewDataSource
[self setState:EGOOPullRefreshLoading];
[_activityViewstartAnimating]
scrollView.contentInset = UIEdgeInsetsMake(60.0f, 0.0f,0.0f, 0.0f);
NSLog(@"_state == EGOOPullRefreshLoading)");
scrollView.contentInset = UIEdgeInsetsMake(offset, 0.0f, 0.0f,0.0f);
doneLoadingTableViewData
egoRefreshScrollViewDataSourceDidFinishedLoading
[scrollView setContentInset:UIEdgeInsetsMake(0.0f,0.0f, 0.0f,0.0f)];
[self setState:EGOOPullRefreshNormal];
立即执行,不用线程的方法执行过程如下:
结束拖动
触发刷新
表视图重新加载数据
表视图数据加载完成
scrollview的contentInset属性增加滚动区域上方0点
设置正常状态
设置正在加载状态
scrollview的contentInset属性增加滚动区域上方60点
立即执行:[self doneLoadingTableViewData];
egoRefreshScrollViewDidEndDragging
egoRefreshTableHeaderDidTriggerRefresh
reloadTableViewDataSource
doneLoadingTableViewData
egoRefreshScrollViewDataSourceDidFinishedLoading
[scrollView setContentInset:UIEdgeInsetsMake(0.0f,0.0f, 0.0f,0.0f)];
[selfsetState:EGOOPullRefreshNormal];
[self setState:EGOOPullRefreshLoading];
scrollView.contentInset = UIEdgeInsetsMake(60.0f, 0.0f,0.0f, 0.0f);
[_activityViewstartAnimating];
scrollView.contentInset = UIEdgeInsetsMake(offset, 0.0f, 0.0f,0.0f);
【开源框架EGOTableViewPullRefresh的研究】的更多相关文章
- AsyncHttpClient 开源框架學習研究
转载请注明出处:http://blog.csdn.net/krislight OverView: AsyncHttpClient庫 基於Apache的HttpClient框架,是一個異步的httpCl ...
- android开源框架thinkinandroid相关研究
和命令相关的类有: TAICommand:接口文件,一个命令接口所有命令需要从此实现,还有以下几种方法: TACommandExecutor 命令的实现类,其中含有commands这个成员变量.大部分 ...
- 转】机器学习开源框架Mahout配置与入门研究
原博文出自于:http://www.ha97.com/5803.html 感谢! PS:机器学习这两年特别火,ATB使劲开百万到几百万年薪招美国牛校的机器学习方向博士,作为一个技术控,也得折腾下 ...
- Pyhton开源框架(加强版)
info:Djangourl:https://www.oschina.net/p/djangodetail: Django 是 Python 编程语言驱动的一个开源模型-视图-控制器(MVC)风格的 ...
- Python开源框架
info:更多Django信息url:https://www.oschina.net/p/djangodetail: Django 是 Python 编程语言驱动的一个开源模型-视图-控制器(MVC) ...
- 移动app框架inoic功能研究
原生移动app框架inoic功能研究 本篇只侧重框架提供的功能和能力的研究,请关注后续实际部署使用体验. 一.inoic是什么? inoic是一个可以使用Web技术以hybird方式开发移动app的前 ...
- 开源框架】Android之史上最全最简单最有用的第三方开源库收集整理,有助于快速开发
[原][开源框架]Android之史上最全最简单最有用的第三方开源库收集整理,有助于快速开发,欢迎各位... 时间 2015-01-05 10:08:18 我是程序猿,我为自己代言 原文 http: ...
- 6个值得推荐的Android开源框架简介(转)
虽然我们在做app的时候并不一定用到框架,但是一些好框架的思想是非常有学习价值的 1.volley 项目地址 https://github.com/smanikandan14/Volley-demo ...
- 六款值得推荐的android(安卓)开源框架简介(转)
1.volley 项目地址 https://github.com/smanikandan14/Volley-demo (1) JSON,图像等的异步下载: (2) 网络请求的排序(scheduli ...
随机推荐
- 在IT公司,project manager 基本上和秘书,助理什么的差不多
我感觉非常有道理,所以我不做Leader,哈哈哈
- HDU 2610 Sequence one
题目大意:在给定的序列中找到固定个数的递增的子序列,如果子序列的总个数少于要求的个数,那么就把所有的子序列输出即可. 题解:本来题目也不太看得懂,在别人的博客看了许久才懂,剪枝和判重也不大会,于是暂时 ...
- poj 1088 滑雪(区间dp+记忆化搜索)
题目链接:http://poj.org/problem?id=1088 思路分析: 1>状态定义:状态dp[i][j]表示在位置map[i][j]可以滑雪的最长区域长度: 2>状态转移方程 ...
- golang实现udp接入服务器
前端通过udp与接入服务器连接,接入服务器与后端tcp服务器维持tcp连接.目录结构及后端tcp服务器代码同上一篇博客. main.go package main import ( "lot ...
- hdu1395-2^x mod n = 1
http://acm.hdu.edu.cn/showproblem.php?pid=1395 原理为 a ^ b % n == d ; >>>>>> (( a % ...
- 面试之get和post(转)
总结1 表单提交中get和post方式的区别归纳如下几点: GET是从服务器上获取数据,POST是向服务器传送数据,GET 请求一般不应产生副作用.就是说,它仅仅是获取资源信息,就像数据库查询一样,不 ...
- 【转】How to Start Intel Hardware-assisted Virtualization (hypervisor) on Linux to Speed-up Intel Android x86 Emulator
[转]How to Start Intel Hardware-assisted Virtualization (hypervisor) on Linux to Speed-up Intel Andro ...
- CSS的position(位置)
position: 位置,absolute绝对位置,相对于浏览器边界的位置:relative相对位置,相对于它本应该出现的位置.fixed:固定位置,它不会随着滚动. 设置好position之后,就可 ...
- char*与char[]
char *s1="hello"; // 指向常量区 char s2[]="hello"; // 指向数组的内存空间 char *s1 的s1是指针,指 ...
- Lowest Common Multiple Plus
Lowest Common Multiple Plus Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java ...