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. Qt 继承QWidget setstylesheet解决

    void myMainWidget::paintEvent(QPaintEvent * e) { QStyleOption opt; opt.init(this); QPainter p(this); ...

  2. android studio recent projects

    android studio正常的删除项目的方法是可以点击右键,选择project structure,进入到界面时,选择你要删除的工程,点击减号,接着就可以右键工程有一个delete. 另外一种方法 ...

  3. pomelo

    简介 Pomelo 是基于 Node.js 的高性能.分布式游戏服务器框架.它包括基础的开发框架和相关的扩展组件(库和工具包),可以帮助你省去游戏开发枯燥中的重复劳动和底层逻辑的开发.Pomelo 不 ...

  4. 80x86汇编小站站长简单介绍

    [人生格言] 1] 一生都用头脑而不是情绪解决这个问题 2] 仅仅有偏执狂才会成功 3] 在最困难时都要保持一份幽默感 4] 吾生也有涯,而知也无涯,以有涯随无涯,殆已 [简历] 我的生日: 1981 ...

  5. HDU 2665(Kth number-区间第k大[内存限制+重数])

    Kth number Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Tota ...

  6. css精灵(css script 技术)

    上班差不多有15天了,感觉每天都有写不完的也页面,每天都有不同的东西需要学习进步,很充实哦.今天接触到css精灵这个东西.其实之前有看过这种技术,但是没有操作过,只是听说这个技术很强大,能干嘛干嘛,但 ...

  7. 语句(语句分类及if语句)

    目前为止,之前学过的程序只能一句一句向下执行.C#:选择控制:if,else,switch,case循环控制:while,do,for,foreach跳转语句:break,continue异常处理:t ...

  8. js中去除换行(\r\n)

    解决方法:replace(/\r\n/g,"").replace("\n","") 测试: <script> var str = ...

  9. Visual C++ 6.0编程环境的使用

    1.1 编制并运行程序的四部曲 (1)编辑(把程序代码输入,交给计算机). (2)编译(成目标程序文件.obj).编译就是把高级语言变成计算机可以识别的2进制语言,计算机只认识1和0,编译程序把人们熟 ...

  10. WebRTC Demo - getUserMedia()

    WebRTC介绍 WebRTC提供三类API: MediaStream,即getUserMedia RTCPeerConnection RTCDataChannel getUserMedia已经由Ch ...