Swift
来源:互联网 发布:沼泽人 知乎 编辑:程序博客网 时间:2024/05/17 02:52
继续将原来的Objective-C改写成Swift。项目中,webview几乎是一个必不可少的控件,最起码,免责声明,注册协议得用吧? 而使用的时候,要么是要给webview添加加载框,要么是使用进度条,来提醒用户等待webview展示。加载框就不说了,MBP,相信很多人在使用,这里说说加载进度条,在iOS8以后,WKWebview带有的一个属性,便是进度参数 estimatedProgress。 此篇,我们将使用此参数,来绘制进度条。代码如下:
//// WKWebview_VC.swift// WebView进度条//// Created by YLJ on 2017/6/21.// Copyright © 2017年 YLJ. All rights reserved.//import UIKitimport WebKitclass WKWebview_VC: UIViewController, WKUIDelegate, WKNavigationDelegate { lazy private var webview: WKWebView = { self.webview = WKWebView.init(frame: self.view.bounds) self.webview.uiDelegate = self self.webview.navigationDelegate = self return self.webview }() lazy private var progressView: UIProgressView = { self.progressView = UIProgressView.init(frame: CGRect(x: CGFloat(0), y: CGFloat(65), width: UIScreen.main.bounds.width, height: 2)) self.progressView.tintColor = UIColor.green // 进度条颜色 self.progressView.trackTintColor = UIColor.white // 进度条背景色 return self.progressView }() override func viewDidLoad() { super.viewDidLoad() view.addSubview(webview) view.addSubview(progressView) webview.addObserver(self, forKeyPath: "estimatedProgress", options: .new, context: nil) webview.load(URLRequest.init(url: URL.init(string: "https://www.baidu.com/")!)) } override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) { if keyPath == "estimatedProgress"{ progressView.alpha = 1.0 progressView.setProgress(Float(webview.estimatedProgress), animated: true) if webview.estimatedProgress >= 1.0 { UIView.animate(withDuration: 0.3, delay: 0.1, options: .curveEaseOut, animations: { self.progressView.alpha = 0 }, completion: { (finish) in self.progressView.setProgress(0.0, animated: false) }) } } } func webView(_ webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!) { print("开始加载") } func webView(_ webView: WKWebView, didCommit navigation: WKNavigation!) { print("开始获取网页内容") } func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) { print("加载完成") } func webView(_ webView: WKWebView, didFail navigation: WKNavigation!, withError error: Error) { print("加载失败") } func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) { decisionHandler(.allow); } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } deinit { webview.removeObserver(self, forKeyPath: "estimatedProgress") webview.uiDelegate = nil webview.navigationDelegate = nil }}
阅读全文
1 0
- SWIFT
- swift
- Swift
- Swift
- swift
- Swift
- swift
- Swift
- swift
- swift
- swift
- Swift
- swift
- swift
- Swift
- swift
- swift
- swift ??
- matlab类与对象的定义
- 千聊资费说明和提现须知
- Octomap
- 友盟分享
- caffe--生成文件列表
- Swift
- VS快捷键及设置方法
- 软件版本RC,M,GA等
- Java中urlrewriter的使用
- DataTimePaker控件想时间和日期都显示的看这里
- angular指令中的require: 'ngModel'
- 解决flex新旧版本的兼容性写法
- Python图像批处理(图像滤波处理)
- 通过js方法找到事件触发的控件