WKWebView添加了estimatedProgress属性(double类型),我们可以利用该属性来设置UIProgressView

github代码仓库上存放的Demo

  • 为页面添加UIProgressView属性
@property (nonatomic, strong) WKWebView *mywebView;
@property (nonatomic, strong) UIProgressView *progressView;//设置加载进度条
  • 懒加载UIProgressView
-(UIProgressView *)progressView{if (!_progressView) {_progressView                   = [[UIProgressView alloc]initWithProgressViewStyle:UIProgressViewStyleDefault];_progressView.frame             = CGRectMake(0, 64, screen_width, 5);[_progressView setTrackTintColor:[UIColor colorWithRed:240.0/255green:240.0/255blue:240.0/255alpha:1.0]];_progressView.progressTintColor = [UIColor greenColor];}return _progressView;
}
  • 在初始化WKWebView时(我是在懒加载时) kvo 添加监控
 [_mywebView addObserver:selfforKeyPath:NSStringFromSelector(@selector(estimatedProgress))options:0context:nil];
  • 页面开始加载时,隐藏进度条
//开始加载
-(void)webView:(WKWebView *)webViewdidStartProvisionalNavigation:(WKNavigation *)navigation{//开始加载的时候,让进度条显示self.progressView.hidden = NO;
}
  • kvo 监听进度
//kvo 监听进度
-(void)observeValueForKeyPath:(NSString *)keyPathofObject:(id)objectchange:(NSDictionary<NSKeyValueChangeKey,id> *)changecontext:(void *)context{if ([keyPath isEqualToString:NSStringFromSelector(@selector(estimatedProgress))]&& object == self.mywebView) {[self.progressView setAlpha:1.0f];BOOL animated = self.mywebView.estimatedProgress > self.progressView.progress;[self.progressView setProgress:self.mywebView.estimatedProgressanimated:animated];if (self.mywebView.estimatedProgress >= 1.0f) {[UIView animateWithDuration:0.3fdelay:0.3foptions:UIViewAnimationOptionCurveEaseOutanimations:^{[self.progressView setAlpha:0.0f];}completion:^(BOOL finished) {[self.progressView setProgress:0.0f animated:NO];}];}}else{[super observeValueForKeyPath:keyPathofObject:objectchange:changecontext:context];}
}
  • 在dealloc方法里移除监听
-(void)dealloc{[self.mywebView removeObserver:selfforKeyPath:NSStringFromSelector(@selector(estimatedProgress))];
}

WKWebView加载进度条(仿微信)相关推荐

  1. 一个KVO 实现WKWebView加载进度条的例子 (注意最后移除观察者)

    // // OpenWebViewController.m // Treasure // // Created by 蓝蓝色信子 on 16/7/29. // Copyright © 2016年 GY ...

  2. WKWebView Safari调试、JS互调、加载进度条、JS中alert、confirm、prompt

    主要内容 Safari调试 swift/OC与JS互调 增加加载进度条 支持JS中alert.confirm.prompt Safari调试 设置 -> safari --> 高级,开启J ...

  3. 仿新浪微博图片加载进度条——JLPieProgressView

    2019独角兽企业重金招聘Python工程师标准>>> JLPieProgressView 仿新浪微博图片加载进度条 实现代码如下: #import "JLPieProgr ...

  4. 小米视频加载进度条效果实现

    原文:小米视频加载进度条效果实现 好吧,其实这些都是我闲暇时自己做着玩的,以前总是拿来主义,现在分享一下让我也为大家做一点贡献好了.废话不说了,看效果. 好吧 其实没什么技术含量 直接上代码好了 和我 ...

  5. 浅谈前端实现页面加载进度条以及 nprogress.js 的实现

    以前在 Vue 的项目用了 nprogress 这个插件,一直对于其如何得知加载进度充满好奇,最近又看到了「前端如何实现页面加载进度条」这个问题,今天周六恰好一探究竟.以下仅为一家之言,如有异议,欢迎 ...

  6. Vue项目实战06:nprogress页面加载进度条

    博客: https://lvsige.top/ nprogress页面加载进度条 前言 很多时候在访问网页的时候我们总是看到页面在加载中,可以却不知道要加载多久,无期限的等待总是让人烦躁不安,所以我们 ...

  7. iview地区加载_LoadingBar 加载进度条

    LoadingBar 加载进度条 概述 全局创建一个显示页面加载.异步请求.文件上传等的加载进度条. 说明 LoadingBar 只会在全局创建一个,因此在任何位置调用的方法都会控制这同一个组件.主要 ...

  8. 【原生JS插件】LoadingBar页面顶部加载进度条

    先展示一下已经实现的效果: 预览地址:http://dtdxrk.github.io/js-plug/LoadingBar/index.html 看到手机上的浏览器内置了页面的加载进度条,想用在pc上 ...

  9. mvvm 耗时加载进度条_ZK的实际应用:MVVM –加载和渲染数据

    mvvm 耗时加载进度条 先前的文章简要介绍了RIA框架ZK,以及其CSS Selector启发的控制器机制如何通过使在控制器类中引用UI组件的任务变得相对灵活来减轻UI更改所带来的一些负担. 然后, ...

最新文章

  1. Quartz.Net线程处理用到的两个Attribute
  2. 在 iOS 应用中直接跳转到 AppStore 的方法
  3. 成功解决AttributeError: 'list' object has no attribute 'ndim'
  4. Java开发Web Service的简介
  5. javascript让firefox支持innerText
  6. nginx反向代理配置去除前缀
  7. 如何在阿里云上安全的存放您的配置
  8. el表达式判断不为空_Java学习72天---EL和JSTL表达式学完.
  9. 地理图例大全整理初中
  10. QT读取局域网共享文件夹文件内容 解决不同网段无法访问共享文件夹问题
  11. 数仓1.4 |业务数仓搭建| 拉链表| Presto
  12. java instrument_JAVA Instrument技术实战以及在QTrace中的应用
  13. 杂七杂八(4): win10设置启动时创建系统还原点
  14. 3名院士被处理,院士改革确实动真格了!
  15. 一款比XMIND更好用的思维导图
  16. MSTP多实例配置实验
  17. 潘粤明版《鬼吹灯》口碑炸裂!豆瓣8.3高分到底好看在哪?
  18. C++ vector 容器的全排列算法 next_permutation
  19. 山水印|竹林野茶:秋冬之际,喝这些茶补水润肺
  20. 简历模板python爬虫

热门文章

  1. 动力节点『lol版』Java学习路线图(六)分布式技术
  2. BrokerChain: A Cross-Shard Blockchain Protocol for Account/Balance-based State Sharding 阅读笔记
  3. 二本电子机械如何靠自学技术进入头部互联网
  4. 当世5大开源跨平台射击型游戏
  5. 智驾产业链上市公司的2022:营收爆发「前夜」,盈利能力待解
  6. 解读SOX法案对中国运营商的影响
  7. 知识图谱综述论文阅读
  8. EN 14320-1保温产品为建筑设备和工业设施.现场制喷涂硬质聚氨酯(PUR)和聚异氰脲酯(PIR)泡沫--CE认证
  9. antd-vue中的表格排序
  10. 探探上当代单身青年的倔强