swift版webview加载网页(带进度条)
来源:互联网 发布:java购物车实现思路 编辑:程序博客网 时间:2024/06/05 10:45
比较简单,直接上代码
import UIKit
import WebKit
import SnapKit
class CMWebVC:
UIViewController
, WKNavigationDelegate {
var webUrl: String?
var webView: WKWebView =WKWebView()
var progressView:UIProgressView =UIProgressView()
var closeBtn: UIButton!
override func initVC() {
webView.addObserver(self, forKeyPath:"estimatedProgress", options:NSKeyValueObservingOptions.new, context:nil)
webView.navigationDelegate =self
}
deinit {
webView.removeObserver(self, forKeyPath:"estimatedProgress")
webView.navigationDelegate =nil
}
override func viewDidLoad() {
super.viewDidLoad()
// webview
view.addSubview(webView)
webView.snp.makeConstraints { (make)in
make.width.height.equalToSuperview()
}
// progressview
view.addSubview(progressView)
progressView.snp.makeConstraints { (make)in
make.width.equalToSuperview()
make.height.equalTo(3)
make.top.equalToSuperview()
}
progressView.tintColor =UIColor.ColorBgTheme()
progressView.isHidden =true
// load url
if webUrl !=nil {
webView.load(URLRequest(url:URL(string:webUrl!)!))
}
// shear
self.showRightItem(image:"nav_share") {
}
}
override func viewWillAppear(_ animated:Bool) {
super.viewWillAppear(animated)
self.closeButton()
}
override func viewWillDisappear(_ animated:Bool) {
self.closeBtn.removeFromSuperview()
}
func closeButton() {
if self.closeBtn ==nil {
self.closeBtn =UIButton(frame:CGRect(x:44, y:0, width:44, height:44))
self.closeBtn.setTitle("关闭", for: .normal)
self.closeBtn.setTitleColor(UIColor.black, for: .normal)
self.closeBtn.addAction({ (button)in
self.navigationController!.popViewController(animated:true)
})
self.navigationController?.navigationBar.addSubview(self.closeBtn)
}
}
override func observeValue(forKeyPath keyPath:String?, of object:Any?, change: [NSKeyValueChangeKey :Any]?, context: UnsafeMutableRawPointer?) {
// 加载进度
if keyPath == "estimatedProgress" {
let newprogress = change?[.newKey]!as!Float
let oldprogress = change?[.oldKey]as?Float ??0.0
//不要让进度条倒着走...有时候goback会出现这种情况
if newprogress < oldprogress {
return
}
if newprogress == 1 {
progressView.isHidden =true
progressView.setProgress(0, animated:false)
}
else {
progressView.isHidden =false
progressView.setProgress(newprogress, animated:true)
}
}
}
func webView(_ webView:WKWebView, didFinish navigation:WKNavigation!) {
progressView.isHidden =true
progressView.setProgress(0, animated:false)
}
func webView(_ webView:WKWebView, didFail navigation:WKNavigation!, withError error: Error) {
progressView.isHidden =true
progressView.setProgress(0, animated:false)
}
override func navigateBack() {
if webView.canGoBack {
webView.goBack()
}
else {
super.navigateBack()
}
}
}
- swift版webview加载网页(带进度条)
- android - WebView加载网页带进度条
- 带加载进度条的WebView
- WebView加载网页及进度条
- Android webview下拉刷新(加载带进度条)
- 带进度条的网页视图webView
- Android WebView 加载网页添加进度条
- android中WebView加载网页设置进度条
- android中WebView加载网页设置进度条
- android中WebView加载网页设置进度条
- android中WebView加载网页设置进度条
- android中WebView加载网页设置进度条
- Swift加载带导航条的WebView
- 【WebView】带加载进度条的WebView及Chrome联调
- WebView加载带中文的网页
- android webview 加载显示网页加载进度条的例子
- 【android】带加载进度条的WebView (附demo下载)
- 自定义带进度条WebView类似微信加载过程
- NOIP模拟(20171102)T1 活动安排
- Ubuntu 安装mysql和简单操作
- MySQL学习(三)【MySQL事务与存储引擎】
- 2017年BAT,京东,美团,滴滴等公司面试经验总结
- 'use strict'-->校验js
- swift版webview加载网页(带进度条)
- 引用博客:http://blog.csdn.net/u012230055/article/details/64125268
- less学习(五)—关于Mixin
- javaWeb项目中包的含义/作用
- openmpi 2.1.1 RoCE 支持
- http://www.cnblogs.com/mengdd/p/4153773.html
- 框架中的抽象类及接口应用
- java.io.StreamCorruptedException: invalid stream header: 异常
- module 'nninit' not found:No LuaRocks module found for nninit