调用
PayWebViewController.showVC(formVC: self, url: "https://www.hao123.com", completion: {
DispatchQueue.main.async(execute: {
HWPrint("来了")
})
})
实现
import UIKit
import WebKit
class PayWebViewController: BaseViewController,WKUIDelegate, WKNavigationDelegate,UIWebViewDelegate {
private var _url : String?
var url : String? {
set {
_url = newValue
if newValue == nil {return}
let request = URLRequest.init(urlString: (newValue)!)
self.webView.load(request!)
}
get {
return _url
}
}
/// 添加进度条
lazy private var progressView: UIProgressView = {
self.progressView = UIProgressView.init(frame: CGRect(x: CGFloat(0), y: 0, width: UIScreen.main.bounds.width, height: 2))
self.progressView.tintColor = UIColor.green // 进度条颜色
self.progressView.trackTintColor = UIColor.white // 进度条背景色
return self.progressView
}()
lazy var webView: WKWebView = {
let webView = WKWebView.init(frame: view.bounds)
webView.scrollView.bounces = false
webView.uiDelegate = self
webView.navigationDelegate = self
view.addSubview(webView)
view.addSubview(self.progressView)
view.bringSubview(toFront: self.progressView) // 将进度条至于最顶层
webView.addObserver(self, forKeyPath: "estimatedProgress", options: .new, context: nil)
return webView
}()
override func viewDidLoad() {
super.viewDidLoad()
navigationItem.title = "支付"
rightButton()
}
func rightButton() {
weak var weakSelf = self
let btn = UIButton.init(titleString: "取消", frame: CGRect.init(x: 0, y: 0, width: 60, height: 44)) {
weakSelf?.dismiss(animated: true, completion: nil)
}
btn.titleLabel?.font = UIFont.systemFont(ofSize: 15)
btn.setTitleColor(UIColor.black, for: .normal)
self.navigationItem.leftBarButtonItem = UIBarButtonItem.init(customView: btn)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
// 加载进度条
if keyPath == "estimatedProgress"{
progressView.alpha = 1.0
HWPrint(self.webView.estimatedProgress)
progressView.setProgress(Float((self.webView.estimatedProgress) ), animated: true)
if (self.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!){
}
func webView(webView: WKWebView, didFinishNavigation navigation: WKNavigation!){
}
func webViewDidClose(_ webView: WKWebView) {
}
func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
}
deinit {
self.webView.removeObserver(self, forKeyPath: "estimatedProgress")
self.webView.uiDelegate = nil
self.webView.navigationDelegate = nil
}
/// 快速跳转设置
class func showVC(formVC:UIViewController,url:String,completion:(()->())?) {
let vc = PayWebViewController()
vc.url = url
let nav = MyNavigationController.init(rootViewController: vc)
formVC.present(nav, animated: true) {
if completion == nil {return}
completion!()
}
}
}
网友评论