亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > iOS > 正文

ios開發加載webview顯示進度條實例

2020-07-26 02:48:46
字體:
來源:轉載
供稿:網友

很多APP加載webView頁面的時候都有進度條顯示,今天我們這里主要使用相對輕量級的WKWebView加載網頁,至于WKWebView 和UIWebView的區別與聯系這里就不多講了,自己百度哈哈。。。

WKWebView加載網頁進度跳顯示主要效果如下:

這里主要是使用KVO監聽WKWebView的“estimatedProgress”屬性,通過監聽該屬性的變化才是進度條的長度。

1、定義便利構造函數、以及屬性和控件

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  }

2、創建webview控件,并監聽estimatedProgress,進度條初始化的時候會給一定的長度顯示(原因下面解釋)。

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)  }

3、監聽estimatedProgress屬性變化,并修改進度條長度,創建進度條的時候之所以給一定的默認長度主要是因為在沒有網絡的狀態下會立即進度float == 1條件,這樣給人的感覺就是沒有加載網頁一樣。

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)    }  }

4、web view加載失敗后提示

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  }}

5、記載失敗后點擊提示重新加載

 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)  }

5、移除監聽,離開頁面的時候需要移除KVO監聽,否則會出現內存泄露

deinit {    webView!.removeObserver(self, forKeyPath: "estimatedProgress")  }

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品爽爽爽| 精品无人区乱码1区2区3区在线| 日韩欧美国产黄色| 中文欧美在线视频| 亚洲欧美精品在线| 精品久久久久久久久中文字幕| 亚洲欧洲日产国码av系列天堂| 国产精品a久久久久久| 亚洲国内精品视频| 亚洲人成电影在线| 性夜试看影院91社区| 久久久天堂国产精品女人| 久久天天躁日日躁| 精品久久中文字幕久久av| 91精品国产91久久久| 日韩av免费看| 91久久在线播放| 亚洲色图欧美制服丝袜另类第一页| 日本在线观看天堂男亚洲| 欧美精品videos性欧美| 欧美丰满老妇厨房牲生活| 国产成人精品一区| 欧美精品videossex88| 久久这里有精品视频| 欧美极品美女视频网站在线观看免费| 久久久久久香蕉网| 国产精品视频一| 国产成人一区二区在线| y97精品国产97久久久久久| 日日骚久久av| 亚洲电影在线看| 欧美大人香蕉在线| 97**国产露脸精品国产| 91高潮精品免费porn| 亚洲精品美女在线观看| 日韩精品久久久久久久玫瑰园| 国产视频精品免费播放| 日韩暖暖在线视频| 成人日韩av在线| 亚洲色图美腿丝袜| 亚洲色图国产精品| 精品国产一区二区三区久久| 欧美激情亚洲综合一区| 国产一区二区丝袜高跟鞋图片| 国产激情综合五月久久| 久久好看免费视频| 国产精品久在线观看| 国产精品福利小视频| 国产精品精品视频| 精品国产自在精品国产浪潮| 国产精品自拍偷拍| 成人欧美在线观看| 亚洲丝袜av一区| 日韩精品在线私人| 欧美专区日韩视频| 国产日韩欧美电影在线观看| 中文字幕亚洲图片| 不卡av在线播放| 欧美另类高清videos| 国产91在线播放| 亚洲美女在线观看| 亚洲摸下面视频| 91伊人影院在线播放| 欧美另类极品videosbest最新版本| 亚洲精品视频免费在线观看| 欧美在线视频观看| 日韩av免费网站| 欧美福利视频在线观看| 777精品视频| 欧美一区二区视频97| 亚洲成人久久电影| 国产在线拍偷自揄拍精品| 久久亚洲国产精品成人av秋霞| 久久激情视频免费观看| 91在线视频一区| 欧美日韩亚洲系列| 日韩精品中文字幕在线播放| 九色成人免费视频| 欧美怡春院一区二区三区| 国产精品av免费在线观看| 日韩男女性生活视频| 国内精品一区二区三区四区| 中文字幕日韩在线视频| 色偷偷亚洲男人天堂| 97精品久久久| 日韩在线播放av| 国产一区二区三区直播精品电影| 亚洲奶大毛多的老太婆| 欧美性高跟鞋xxxxhd| 国内精品视频久久| 亚洲色图13p| 欧美大片va欧美在线播放| 国产91精品视频在线观看| 中文字幕精品—区二区| 欧美视频在线观看免费| 国产精品爽爽ⅴa在线观看| 91香蕉国产在线观看| 精品久久久视频| 91国产中文字幕| 国产精品xxxxx| 91亚洲精品在线| 97香蕉久久夜色精品国产| 欧美另类极品videosbest最新版本| 国产精品第2页| 亚洲精品视频免费| 亚洲欧美精品suv| www.日韩视频| 国产精品白丝av嫩草影院| 亚洲无限乱码一二三四麻| 成人福利免费观看| 久久精品国产v日韩v亚洲| 亚洲国产精久久久久久| 伊人青青综合网站| 欧美激情一区二区三级高清视频| 亚洲片国产一区一级在线观看| 91av在线精品| 欧美成人国产va精品日本一级| 国产精品99久久久久久人| 国产伊人精品在线| 九色精品美女在线| 久久伊人色综合| 国产精品爽爽爽爽爽爽在线观看| 国产91精品久久久久| 精品国产欧美一区二区三区成人| 国产脚交av在线一区二区| 亚洲摸下面视频| 久久久精品视频成人| 国产色综合天天综合网| 久久高清视频免费| 欧美多人乱p欧美4p久久| 欧美裸体男粗大视频在线观看| 国产欧美日韩中文字幕| 日韩中文字幕视频在线| 欧美亚洲另类视频| www.亚洲天堂| 日韩国产精品一区| 国产精品人成电影| 尤物yw午夜国产精品视频| 精品久久久久久亚洲精品| 狠狠躁夜夜躁久久躁别揉| 欧美日韩性视频| 国产亚洲精品久久久久久牛牛| 久久久精品中文字幕| 亚洲女同精品视频| 亚洲第一页中文字幕| 午夜精品理论片| 国产不卡av在线免费观看| 亚洲аv电影天堂网| 国产一区二区日韩精品欧美精品| 日韩视频免费大全中文字幕| 精品久久久国产精品999| 亚洲国产精品高清久久久| 精品久久久香蕉免费精品视频| 国产69精品99久久久久久宅男| 91综合免费在线| 久久久久久久久久久免费精品| 成人午夜在线观看| 久久精品色欧美aⅴ一区二区| 国精产品一区一区三区有限在线| 亚洲欧美制服第一页| 亚洲视频国产视频| 国产精品私拍pans大尺度在线| 91精品国产自产在线老师啪| 欧美精品www在线观看|