Swift中的Progressbar WebView [英] Progressbar WebView in Swift
问题描述
我正在用xcode迅速编写一个Web应用程序.我有一个问题我如何添加一个进度条,向我显示每个页面的加载情况?"
I'm writing a webapp in swift with xcode. I've a question "How can I add a progressbar that shows me the loading of each page?"
@IBOutlet var webView: UIWebView!
override func viewDidLoad() {
super.viewDidLoad()
let url = NSURL(string: "http://stackoverflow.com")
let request = NSURLRequest(URL: url)
webView.loadRequest(request)
}
(对不起,我的英语)
推荐答案
您可以找到一个很好的答案在这篇文章中.您可以仅将进度条作为子视图添加到您的Web视图.主要问题是进度条的准确性.建议的答案是从不断对其进行动画处理开始,在仍加载时将其阻止为95%,并在您的请求完成后将其一直压缩到100%.
You can find a very good answer in this post. You can just add a progress bar as a subview to your webview. The main problem is the accuracy of the progress bar. The proposed answer is to begin by animating it constantly, block it at 95% when still loading and when your request is complete, zip it all the way to 100%.
这是Swift中的解决方案:
Here's a solution in Swift:
添加以下属性:
//Add this progress view via Interface Builder (IBOutlet) or programatically
let myProgressView: UIProgressView
var theBool: Bool
var myTimer: NSTimer
这些功能将填充进度视图.您可以使用以下参数:
These functions will fill the progress view. You can play with the parameters:
func funcToCallWhenStartLoadingYourWebview() {
self.myProgressView.progress = 0.0
self.theBool = false
self.myTimer = NSTimer.scheduledTimerWithTimeInterval(0.01667, target: self, selector: "timerCallback", userInfo: nil, repeats: true)
}
func funcToCallCalledWhenUIWebViewFinishesLoading() {
self.theBool = true
}
func timerCallback() {
if self.theBool {
if self.myProgressView.progress >= 1 {
self.myProgressView.hidden = true
self.myTimer.invalidate()
} else {
self.myProgressView.progress += 0.1
}
} else {
self.myProgressView.progress += 0.05
if self.myProgressView.progress >= 0.95 {
self.myProgressView.progress = 0.95
}
}
}
这篇关于Swift中的Progressbar WebView的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!