Swift版使用ThPullRefresh实现下拉上拉刷新数据

最近自己写了一个下拉加载最新,上拉加载更多的刷新控件。借鉴了其他优秀开源代码的实现效果比如MJRefresh和DGElasticPullRefresh。主要是为了学习别人的优秀思想。

如何使用:

  Cocoapods 导入:pod 'ThPullRefresh',

  在项目中 import 'ThPullRefresh'

  手动导入:将'ThPullRefresh' 文件夹中的所有文件拽入项目中

  head与foot基本效果的添加  

具体代码如下:

  override func viewDidLoad() {
    super.viewDidLoad()
    self.tableView.registerClass(UITableViewCell.classForCoder(), forCellReuseIdentifier: "tableViewCell")
    self.tableView.rowHeight = UITableViewAutomaticDimension
    self.tableView.estimatedRowHeight = 44
    self.tableView.tableFooterView = UIView()
//    self.tableView.addHeadRefresh(self) { () -> () in
//      self.loadNewData()
//    }
    self.tableView.addHeadRefresh(self, action: "loadNewData")

    self.tableView.head?.hideTimeLabel=true
    self.tableView.addFootRefresh(self, action: "loadMoreData")
  }

  func loadNewData(){
    //延时模拟刷新
    self.index = 0
    DeLayTime(2.0, closure: { () -> () in
      self.dataArr.removeAllObjects()
      for (var i = 0 ;i<5;i++){
        let str = "最新5个cell,第\(self.index++)个"
        self.dataArr.addObject(str)
      }
      self.tableView.reloadData()
      self.tableView .tableHeadStopRefreshing()
    })

  }

DelayTime是一个方法的宏

func DeLayTime(x:Double,closure:()->()){
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, Int64(x * Double(NSEC_PER_SEC))), dispatch_get_main_queue(), closure)
}

要实现果冻效果

代码如下

几个有颜色的点可以忽略,那是开发用于调贝塞尔曲线的。

  /*
  *bgColor 背景颜色
  *loadingColor 加载的颜色
  */
  public func addBounceHeadRefresh(target:AnyObject?,bgColor:UIColor,loadingColor:UIColor,action : Selector);

//实现如下
self.tableView.addBounceHeadRefresh(self,bgColor:UIColor.orangeColor(),loadingColor:UIColor.blueColor(), action: "loadNewData")

停止头部刷新和底部刷新

self.tableView.tableHeadStopRefreshing()
self.tableView.tableFootStopRefreshing

以上就是本文的全部内容,希望对大家的学习有所帮助。

(0)

相关推荐

  • 实例讲解动态加载gridview中的行及其样式

    知识点及实例 复制代码 代码如下: protected void gvSuperAdminSeeInfo_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType != DataControlRowType.DataRow)//判断是否是数据行 { return; } e.Row.Attributes.Add("onmouseover", "this.style.backgroundColo

  • GridView基于pulltorefresh实现下拉刷新 上拉加载更多功能(推荐)

    原理和listview一样 ,都是重写Android原生控件 Activity package com.example.refreshgridview; import java.util.ArrayList; import java.util.List; import android.app.Activity; import android.os.Bundle; import android.widget.GridView; import android.widget.Toast; import

  • jquery+ashx无刷新GridView数据显示插件(实现分页、排序、过滤功能)

    理由:jquery简单,兼容性好且容易封装.废话不多说,马上开始我们的Jquery插件编写吧.应该有很多人写过类似的插件,我也是有些模仿flexGrid的形式. 需求:GridView显示数据,无刷新分页,无刷新排序,无刷新过滤(搜索数据),基于ASP.NET(我们这里有ashx一般处理文件来实现). 使用到技术:asp.net2.0, jquery,css 首先写的是jquery插件方面,使用的核心函数还是jquery的ajax函数,方便快捷. 复制代码 代码如下: $.ajax({ type

  • 使用ajax局部刷新gridview进行数据绑定示例

    具体代码如下: 复制代码 代码如下: <% @ Page Language = " C# " %> <! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" > < script runat ="server" &

  • 用JavaScript页面不刷新时全选择,全删除(GridView)

    /* 全选择*/ function SB002SelectAll() { var table = document.getElementById("ctl00_MainContent_grvDevelopKit"); for(var i=1;i<table.rows.length;i++) { var input = table.rows[i].cells[0].getElementsByTagName("input")[0]; input.checked =

  • Swift版使用ThPullRefresh实现下拉上拉刷新数据

    最近自己写了一个下拉加载最新,上拉加载更多的刷新控件.借鉴了其他优秀开源代码的实现效果比如MJRefresh和DGElasticPullRefresh.主要是为了学习别人的优秀思想. 如何使用: Cocoapods 导入:pod 'ThPullRefresh', 在项目中 import 'ThPullRefresh' 手动导入:将'ThPullRefresh' 文件夹中的所有文件拽入项目中 head与foot基本效果的添加 具体代码如下: override func viewDidLoad()

  • Swift开发之使用UIRefreshControl实现下拉刷新数据及uirefreshcontrol使用

    想要下拉刷新表格数据,上拉加载新数据,网上有许多第三方的实现类. 而如果仅仅需要实现下拉刷新数据的话,那么使用 UIRefreshControl 就足够了,简单有好用. 1.UIRefreshControl 的使用步骤: (1)创建 UIRefreshControl,并设置文字,颜色等信息. (2)将 UIRefreshControl 添加到tableview视图中. (3)给 UIRefreshControl 添加方法,当值改变的时候调用,用于数据请求刷新. (4)请求数据确认完成之后,调用e

  • mui上拉加载更多下拉刷新数据的封装过程

    辗转用mui做了两个项目,空下来把mui上拉加载更多,下拉刷新数据做了一个简单的封装,希望可以帮助到需要的朋友 demo项目的结构 直接贴代码了 index.html mui上拉刷新下拉加载都这里了,两个方法搞定 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device

  • angularjs实现上拉加载和下拉刷新数据功能

    虽说AngularJS 1.x版本中对于上拉加载,下拉刷新数据功能都有做些封装,但还是有些人不清楚.其实我一开始也是不懂的,so.现在把搞懂的记录下免得少走弯路. now,begin:先说下拉刷新吧,原理就是每次下拉都重新去服务器请求过一次新的数据.一般这种刷新功能的响应数据(也就是服务器返回的(json)数据)中都会带有 "rowsOfPage": 3, "currentPage": 1, "totalPages": 10, "tot

  • 使用echarts柱状图实现select下拉刷新数据

    目录 echarts柱状图实现select下拉刷新数据 表格的下拉框中包含echarts图表的demo echarts柱状图实现select下拉刷新数据 废话少说,直接上代码 <div>月度 <select id="year_data"> <option value="1" class="active">3月</option> <option value="2">4月

  • IE9下Ajax无法刷新数据的缓存问题解决方法

    使用jQuery的getJSON从后台定时获取数据并刷新界面,使用以下方法时,在Chrome,Firefox下没问题,但在IE9下却无法刷新数据 $.getJSON(webApp + "/GetShowData.do?limit=" + limit,function(data){ //****************** } 原因是,在IE9下,进行Ajax请求时,若与之前请求相同,则不会再从浏览器获取数据,而是直接从本地获取,因此,在请求中加上时间戳,IE9便会认为是不同的请求,代码

  • Android自定义组合控件之自定义下拉刷新和左滑删除实例代码

    绪论 最近项目里面用到了下拉刷新和左滑删除,网上找了找并没有可以用的,有比较好的左滑删除,但是并没有和下拉刷新上拉加载结合到一起,要不就是一些比较水的结合,并不能在项目里面使用,小编一着急自己组合了一个,做完了和QQ的对比了一下,并没有太大区别,今天分享给大家,其实并不难,但是不知道为什么网上没有比较好的Demo,当你的项目真的很急的时候,又没有比较好的Demo,那么"那条友谊的小船儿真是说翻就翻啊",好了,下面先来具体看一下实现后的效果吧: 代码已经上传到Github上了,小伙伴们记

  • Android下拉刷新PtrFrameLayout的使用实例代码

    1.介绍: 可以包含所有的控件 :ListView, GridView, ScrollView, FrameLayout, 甚至 TextView. 可以自定义刷新头(这点非常实用) 使用简单方便 不足就是不支持上拉加载. 2.使用 首先添加依赖到项目 compile 'in.srain.cube:ultra-ptr:1.0.11' 在Xml中使用 <in.srain.cube.views.ptr.PtrFrameLayout xmlns:android="http://schemas.a

  • APP中javascript+css3实现下拉刷新效果

    原生app里的数据列表都会使用下拉刷新的效果,在webapp里可以采用iscroll.swiper等插件或框架实现,那么如何自己编码实现类似的效果呢,下面介绍使用原生js+css3实现的简单效果. html布局 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-

  • 微信小程序 scroll-view实现上拉加载与下拉刷新的实例

    微信小程序 scroll-view实现上拉加载与下拉刷新的实例 实现效果图: 如图,使用小程序的scroll-view实现的上拉加载数据,下拉刷新数据,试下代码如下: js文件代码: var url = "http://192.168.30.4:8080/gtxcx/carrier/getCarrier.action"; var page = 1; var GetList = function (that) { that.setData({ hidden: false }); wx.r

随机推荐