IOS UIWebView 下拉刷新功能的简单实现
1.运行效果图
2.swift 代码的实现
import UIKit
class RefreshWebViewController: UIViewController,UIScrollViewDelegate,UIWebViewDelegate{
@IBOutlet weak var webView: UIWebView!
//刷新控件view
private var header:UIView!
//下拉到50时松开刷新
private let pullHeight:CGFloat=50
//刷新提示文字
private var headerText:UILabel!
//刷新指示器(旋转小圆圈)
private var activityView:UIActivityIndicatorView!
//标记刷新状态
private var isRefreshing=false
override func viewDidLoad() {
super.viewDidLoad()
self.webView.scrollView.delegate=self
self.webView.delegate=self
self.automaticallyAdjustsScrollViewInsets=false
initHeaderView()
loading()
}
//定义下拉刷新控件
private func initHeaderView( ) {
self.header=UIView(frame: CGRectMake(0,0, self.view.frame.width,200))
self.header.backgroundColor=UIColor.darkGrayColor()
self.headerText=UILabel(frame: CGRectMake((self.view.frame.width-120)/2,10,150,30))
self.headerText.text="下拉刷新"
self.headerText.textAlignment=NSTextAlignment.Center
self.headerText.textColor=UIColor.whiteColor()
self.header.addSubview(headerText)
self.activityView=UIActivityIndicatorView(frame: CGRectMake( self.headerText.frame.origin.x-5,15,20,20))
self.header.addSubview(activityView)
self.webView.insertSubview(header, atIndex: 0)
}
//加载网页
func loading( ) {
self.webView.loadRequest(NSURLRequest(URL: NSURL(string:"http://www.hao123.com")!))
}
//scroll滚动时调用
func scrollViewDidScroll(scrollView: UIScrollView) {
if isRefreshing{
return
}
//当下拉到pullHeight高度时松开即可刷新
if scrollView.contentOffset.y <= -pullHeight{
self.headerText.text="松开立即刷新"
}else{
self.headerText.text="下拉刷新"
}
}
// scrollview停止滚动时调用
func scrollViewDidEndDragging(scrollView: UIScrollView, willDecelerate decelerate: Bool) {
if isRefreshing{
return
}
if scrollView.contentOffset.y <= -pullHeight{
refreshing()
}
}
//开始刷新
func refreshing( ) {
isRefreshing=true
self.headerText.text="正在刷新..."
self.activityView.startAnimating()
UIView.animateWithDuration(0.5, delay: 0, options: .CurveEaseOut, animations: {
// 设置刷新控件停留
var offY = self.webView.scrollView.contentInset
offY.top += self.pullHeight
self.webView.scrollView.contentInset=offY
}, completion:{(_)->Void in
})
self.loading()
}
//刷新结束
func refreshEnd() {
self.headerText.text="刷新成功"
self.activityView.stopAnimating()
UIView.animateWithDuration(1, delay: 0, options: .CurveEaseOut, animations: {
//恢复刷新控件到原始位置
var offY = self.webView.scrollView.contentInset
offY.top -= self.pullHeight
self.webView.scrollView.contentInset=offY
}, completion:{(_)->Void in
self.isRefreshing=false
self.headerText.text="下拉刷新"
})
}
//网页加载完成
func webViewDidFinishLoad(webView: UIWebView) {
if isRefreshing{
refreshEnd()
}
}
}
IOS UIWebView 下拉刷新功能的简单实现的更多相关文章
- 原生js实现简单的下拉刷新功能
前言: 我们在浏览移动端web页面的时候,经常会用到下拉刷新. 现在我们用原生的js实现这个非常简单的下拉刷新功能. (温馨提示:本文比较基础,功能也很简单.写的不好的地方,希望大神提点一二.) 一. ...
- Xamarin. Android实现下拉刷新功能
PS:发现文章被其他网站或者博客抓取后发表为原创了,给图片加了个水印 下拉刷新功能在安卓和iOS中非常常见,一般实现这样的功能都是直接使用第三方的库,网上能找到很多这样的开源库.然而在Xamarin. ...
- Android 高仿微信(QQ)滑动弹出编辑、删除菜单效果,增加下拉刷新功能
不可否认,微信.QQ列表的滑动删除.编辑功能着实很经典(从IOS那边模仿过来的),然.Android这边,对列表的操作,其实大多还停留上下文菜单来实现. Android如何实现list item的滑动 ...
- IOS 开发下拉刷新和上拉加载更多
IOS 开发下拉刷新和上拉加载更多 简介 1.常用的下拉刷新的实现方式 (1)UIRefreshControl (2)EGOTTableViewrefresh (3)AH3DPullRefresh ( ...
- [转]Android下拉刷新完全解析,教你如何一分钟实现下拉刷新功能
版权声明:本文出自郭霖的博客,转载必须注明出处. 转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/9255575 最近项目中需要用到L ...
- Android下拉刷新完全解析,教你如何一分钟实现下拉刷新功能 (转)
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/9255575 最 近项目中需要用到ListView下拉刷新的功能,一开始想图省事,在 ...
- android ListView上拉加载更多 下拉刷新功能实现(采用pull-to-refresh)
Android实现上拉加载更多功能以及下拉刷新功能, 采用了目前比较火的PullToRefresh,他是目前实现比较好的下拉刷新的类库. 目前他支持的控件有:ListView, ExpandableL ...
- 利用Swiperefreshlayout实现下拉刷新功能的技术探讨
在常见的APP中通常有着下拉页面从而达到刷新页面的功能,这种看似简单的功能有着花样繁多的实现方式.而利用Swiperefreshlayout实现下拉刷新功能则是其中比较简明扼要的一种. 一般来说,在竖 ...
- Android StaggeredGrid 加下拉刷新功能 PullToRefresh
https://github.com/etsy/AndroidStaggeredGrid 用的github上面提供瀑布流,继承于abslistview,回收机制不错,并且提供了OnScrollLis ...
随机推荐
- JSON中eval与parse的区别
json的的解析方法 (非原创) json的解析方法共有两种:eval_r() 和 JSON.parse(),使用方法如下: var jsonData = '{"data1":&q ...
- leetcode一些常用函数
6移位操作 “>> 右移,高位补符号位” 这里右移一位表示除2“>>> 无符号右移,高位补0”: 与>>类似“<< 左移” 左移一位表示乘2,二位 ...
- 设计模式--适配器模式Adapter(结构型)
一.适配器模式 适配器模式的主要作用是在新接口和老接口之间进行适配.将一个类的接口转换成客户端期望的另外一个接口.其实适配器模式有点无赖之举,在前期设计的时候,我们就不应该考虑适配器模式,而应该通过重 ...
- 通过rsync+inotify实现数据的实时备份
我讲到过利用rsync实现数据的镜像和备份,但是要实现数据的实时备份,单独靠rsync还不能实现,本文就讲述下如何实现数据的实时备份. 一.rsync的优点与不足 与传统的cp.tar备份方式相比,r ...
- 关于Vue vuex vux 文档
01. vue 链接 http://vuejs.org.cn/guide/ 02. vuex ----->>状态管理模块儿<<------- https://vuex.vue ...
- php备份mysql的代码
1. mydb.php //DB类2. backup.php //备份脚本3. restore.php //还原脚本 mydb.php <?class db{ var $linkid;var $ ...
- git常用的命令集合
Git 是一个很强大的分布式版本控制系统.它不但适用于管理大型开源软件的源代码,管理私人的文档和源代码也有很多优势. Git常用操作命令: 1) 远程仓库相关命令 检出仓库:$ git clone g ...
- IOS进阶之WKWebView
前言 Xcode8发布以后,编译器开始不支持IOS7,所以很多应用在适配IOS10之后都不在适配IOS7了,其中包括了很多大公司,网易新闻,滴滴出行等.因此,我们公司的应用也打算淘汰IOS7. 支持到 ...
- CSS网页制作常用标签
做了一个简单的网页,从布局到加内容,遇到了很多小问题.很多标签和属性都不会用或者忘记了.所以以此记录一下. 一.如何将边框四角变圆?(或做一个圆形) 顾名思义,如果要更改边框的角需要用到边框(bord ...
- jquery的live转on的办法
<!DOCTYPE html> <html> <head> <script src="http://libs.baidu.com/jquery/1. ...