• 【开源框架EGOTableViewPullRefresh的研究】


    EGOTableViewPullRefresh:点击打开链接https://github.com/enormego/EGOTableViewPullRefresh

    RootViewController.m中的

    //EGORefreshTableHeaderView *view接到tableview的上面,所以坐标是(0-460320460),这样下拉出来的就是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.0f0.0f,0.0f0.0f);

    NSLog(@"_state == EGOOPullRefreshLoading)");

    scrollView.contentInset = UIEdgeInsetsMake(offset, 0.0f0.0f,0.0f);

    doneLoadingTableViewData

    egoRefreshScrollViewDataSourceDidFinishedLoading

    [scrollView setContentInset:UIEdgeInsetsMake(0.0f,0.0f0.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.0f0.0f,0.0f)];

    [selfsetState:EGOOPullRefreshNormal];

    [self setState:EGOOPullRefreshLoading];

    scrollView.contentInset = UIEdgeInsetsMake(60.0f0.0f,0.0f0.0f);

    [_activityViewstartAnimating];

    scrollView.contentInset = UIEdgeInsetsMake(offset, 0.0f0.0f,0.0f);


  • 相关阅读:
    X 如何在mysql客户端即mysql提示符下执行操作系统命令
    X MySQL UNDO表空间独立和截断 ,mysql undo 的历史
    X Mysql5.7忘记root密码及mysql5.7修改root密码的方法
    X mysql密码的安全策略ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
    二分法查找
    elasticsearch API
    logstash的基础
    elasticsearch的基础
    Linux的进程管理
    Linux的网卡配置
  • 原文地址:https://www.cnblogs.com/riskyer/p/3263259.html
Copyright © 2020-2023  润新知