iOS 开发加载 WebView 显示进度条实例 iOS 开发中,加载 WebView 并显示进度条是一个常见的需求。今天,我们将介绍如何使用 WKWebView 实现加载进度条的显示。 我们需要了解 WKWebView 和 UIWebView 的区别。WKWebView 是 iOS 8 中引入的一种新的 WebView 组件,它具有更高的性能和更好的安全性,而 UIWebView 则是早期的 WebView 组件。今天,我们将使用 WKWebView 实现加载进度条的显示。 要实现加载进度条的显示,我们需要使用 KVO(Key-Value Observing)监听 WKWebView 的“estimatedProgress”属性。EstimatedProgress属性表示当前 WebView 的加载进度,它的值范围是 0.0 到 1.0。 我们需要定义一个 WKWebView 实例,并添加到视图中。 ```swift var webView: WKWebView? 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!) } ``` 接下来,我们需要添加属性监听来监听 WKWebView 的“estimatedProgress”属性。 ```swift webView?.addObserver(self, forKeyPath: "estimatedProgress", options: .new, context: nil) ``` 当“estimatedProgress”属性变化时,我们需要更新进度条的长度。 ```swift 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: { // TO DO }) } } } ``` 在上面的代码中,我们使用 KVO 监听“estimatedProgress”属性的变化,并更新进度条的长度。当进度条达到 100% 时,我们将其隐藏。 使用 WKWebView 实现加载进度条的显示需要使用 KVO 监听“estimatedProgress”属性,并更新进度条的长度。
- 粉丝: 8
- 资源: 960
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助