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的研究】的更多相关文章

  1. AsyncHttpClient 开源框架學習研究

    转载请注明出处:http://blog.csdn.net/krislight OverView: AsyncHttpClient庫 基於Apache的HttpClient框架,是一個異步的httpCl ...

  2. android开源框架thinkinandroid相关研究

    和命令相关的类有: TAICommand:接口文件,一个命令接口所有命令需要从此实现,还有以下几种方法: TACommandExecutor 命令的实现类,其中含有commands这个成员变量.大部分 ...

  3. 转】机器学习开源框架Mahout配置与入门研究

    原博文出自于:http://www.ha97.com/5803.html    感谢! PS:机器学习这两年特别火,ATB使劲开百万到几百万年薪招美国牛校的机器学习方向博士,作为一个技术控,也得折腾下 ...

  4. Pyhton开源框架(加强版)

    info:Djangourl:https://www.oschina.net/p/djangodetail: Django 是 Python 编程语言驱动的一个开源模型-视图-控制器(MVC)风格的 ...

  5. Python开源框架

    info:更多Django信息url:https://www.oschina.net/p/djangodetail: Django 是 Python 编程语言驱动的一个开源模型-视图-控制器(MVC) ...

  6. 移动app框架inoic功能研究

    原生移动app框架inoic功能研究 本篇只侧重框架提供的功能和能力的研究,请关注后续实际部署使用体验. 一.inoic是什么? inoic是一个可以使用Web技术以hybird方式开发移动app的前 ...

  7. 开源框架】Android之史上最全最简单最有用的第三方开源库收集整理,有助于快速开发

    [原][开源框架]Android之史上最全最简单最有用的第三方开源库收集整理,有助于快速开发,欢迎各位... 时间 2015-01-05 10:08:18 我是程序猿,我为自己代言 原文  http: ...

  8. 6个值得推荐的Android开源框架简介(转)

    虽然我们在做app的时候并不一定用到框架,但是一些好框架的思想是非常有学习价值的 1.volley 项目地址 https://github.com/smanikandan14/Volley-demo  ...

  9. 六款值得推荐的android(安卓)开源框架简介(转)

    1.volley 项目地址 https://github.com/smanikandan14/Volley-demo (1)  JSON,图像等的异步下载: (2)  网络请求的排序(scheduli ...

随机推荐

  1. 试用阿里云RDS的MySQL压缩存储引擎TokuDB

    以前就用过自己搭建MySQL服务器的两种存储引擎MyISAM和InnoDB(也用过一点Memory方式),在今年初转向阿里云关系型数据库服务RDS的时候,看到可调参数中有一个TokuDB,不过不太了解 ...

  2. zookeeper 同步

    <pre name="code" class="html">一个节点上的数据发生变化后,通知其他节点 server 1: [root@wx03 bi ...

  3. Drying(贪心)

    Drying Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 11512   Accepted: 2977 Descripti ...

  4. MongoDB初探系列之二:认识MongoDB提供的一些经常使用工具

    在初探一中,我们已经能够顺利的将MongoDB在我们自己的机器上跑起来了. 可是在其bin文件夹以下另一些我们不熟知的工具.接下来,将介绍一下各个小工具的用途以及初探一中MongoDB在data文件夹 ...

  5. 上传图片到文件夹并显示在GridView控件里面

    http://aspsnippets.com/Articles/Upload-images-to-folder-and-display-uploaded-images-in-ASPNet-GridVi ...

  6. js获取浏览器地址栏传递的参数

    function getQueryString(key){ var href=window.location.href; var reg = new RegExp(key +"=([^&am ...

  7. HTML5 事件

    下面的表格列出了可插入 HTML 5 元素中以定义事件行为的标准事件属性. Window 事件属性 - Window Event Attributes 表单事件 - Form Events 键盘事件 ...

  8. Python之路:Python 函数

    一.函数式编程:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类和封装 二. 函数的定义和使用 def 函数名(参数): ... 函数体 ... 函数的定义主要有 ...

  9. vc 获取网页内容(HTTP)

    BOOL bResult = FALSE; // 初始化WinInet 环境        HINTERNET hInternet = InternetOpen("CEHTTP", ...

  10. Python 連接 MySQL

    Python 連接 MySQL MySQL 是十分流行的開源資料庫系統,很多網站也是使用 MySQL 作為後台資料儲存,而 Python 要連接 MySQL 可以使用 MySQL 模組.MySQLdb ...