var url: String?
var progresslayer = CALayer()
var webView: WKWebView?
var button: UIButton?
convenience init(title: String, url: String) {
self.init()
self.title = title
self.url = url
}
func setupUI() {
webView = WKWebView(frame: CGRect.init(x: 0, y: 0, width: screenWidth, height: screenHeight-64.0))
if url == "" {
url = "http:www.baidu.com"
}
let request = URLRequest(url: URL(string: url ?? "http:www.baidu.com")!)
webView?.load(request)
webView?.uiDelegate = self
webView?.navigationDelegate = self;
view.addSubview(webView!)
//添加属性监听
webView?.addObserver(self, forKeyPath: "estimatedProgress", options: .new, context: nil)
progresslayer.frame = CGRect.init(x: 0, y: 0, width: screenWidth * 0.1, height: 3)
progresslayer.backgroundColor = UIColor.green.cgColor
view.layer.addSublayer(progresslayer)
}
override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
if keyPath == "estimatedProgress" {
progresslayer.opacity = 1
let float = (change?[NSKeyValueChangeKey.newKey] as! NSNumber).floatValue
progresslayer.frame = CGRect.init(x: 0, y: 0, width: (screenWidth * CGFloat(float)) , height: 3)
if float == 1 {
weak var weakself = self
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 0.2, execute: {
weakself?.progresslayer.opacity = 0
})
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 0.8, execute: {
weakself?.progresslayer.frame = CGRect.init(x: 0, y: 0, width: 0, height: 3);
})
}
}else{
super.observeValue(forKeyPath: keyPath, of: object, change: change, context: context)
}
}
extension KKWebView : WKUIDelegate, WKNavigationDelegate {
func webView(_ webView: WKWebView, didFailProvisionalNavigation navigation: WKNavigation!, withError error: Error) {
guard let btn = button else {
button = UIButton(type: .system)
button?.frame = CGRect.init(x: 0, y: 3, width: screenWidth, height: screenHeight-64-3)
button?.backgroundColor = UIColor.white
button?.setTitleColor(UIColor.darkText, for: .normal)
button?.setTitle("点击重新加载", for: .normal)
button?.addTarget(self, action: #selector(loadURL), for: .touchUpInside)
view.addSubview(button!)
return
}
btn.isHidden = false
}
}
func loadURL() {
button?.isHidden = true
if url == "" {
url = "http:www.baidu.com"
}
let request = URLRequest(url: URL(string: url ?? "http:www.baidu.com")!)
webView?.load(request)
}
deinit {
webView!.removeObserver(self, forKeyPath: "estimatedProgress")
}
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有