【问题标题】:Connect a UIProgressView to a UIWebView - Swift/Objective-c将 UIProgressView 连接到 UIWebView - Swift/Objective-c
【发布时间】:2014-09-06 18:43:21
【问题描述】:
我的故事板上有一个UIWebView,正在从我的博客加载一个页面。
我还想把UIProgressView 放在那里...但我真的不知道如何将它连接到我的Web 视图。
你能帮帮我吗?
PS:我的主要项目是在 Swift 中,但是如果你有一个使用 Objective-C 的解决方案,无论如何发布它,我会尝试转换它:)
谢谢
【问题讨论】:
标签:
ios
objective-c
webview
uiwebview
swift
【解决方案1】:
你在 swift 3 中解决这个问题
override func viewDidLoad() {
super.viewDidLoad()
let url = NSURL(string: "https://topdigital.agency")
let request = NSURLRequest(url: url as! URL)
webView.loadRequest(request as URLRequest)
webView.delegate=self
}
func webViewDidStartLoad(_ webView: UIWebView) {
self.progressView.setProgress(0.1, animated: false)
}
func webViewDidFinishLoad(_ webView: UIWebView) {
self.progressView.setProgress(1.0, animated: true)
}
func webView(_ webView: UIWebView, didFailLoadWithError error: Error) {
self.progressView.setProgress(1.0, animated: true)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
【解决方案2】:
一种方法是使用UIWebViewDelegate。只需设置webview.delegate = self。 UIActivityIndicator 将位于 UINavigationBar 的右上角。如果你没有导航栏,你可以给UIActivityIndicator设置一个位置,然后调用activityIndicator.stopAnimationg()停止动画。
func webViewDidStartLoad(webView: UIWebView) { //start
var activityIndicator = UIActivityIndicatorView(activityIndicatorStyle: .White)
var activityBarButtonItem = UIBarButtonItem(customView: activityIndicator)
navigationItem.rightBarButtonItem = activityBarButtonItem
activityIndicator.startAnimating()
}
func webViewDidFinishLoad(webView: UIWebView) { //stop
navigationItem.rightBarButtonItem = nil
}