Swift中的Progressbar WebView

Mir*_*bin 2 xcode uiwebview webview ios swift

我正在使用xcode在swift中编写一个webapp.我有一个问题"如何添加一个进度条,向我显示每个页面的加载?"

@IBOutlet var webView: UIWebView!
override func viewDidLoad() {
   super.viewDidLoad()
   let url = NSURL(string: "http://stackoverflow.com")
   let request = NSURLRequest(URL: url)
   webView.loadRequest(request)
}
Run Code Online (Sandbox Code Playgroud)

(对不起我的英语不好)

Sta*_*eam 14

你可以在这篇文章中找到一个很好的答案.您只需将进度条添加为webview的子视图即可.主要问题是进度条的准确性.建议的答案是从不断动画制作开始,在加载时阻止95%,当你的请求完成时,将它一直压缩到100%.

这是Swift的解决方案:

添加以下属性:

//Add this progress view via Interface Builder (IBOutlet) or programatically
let myProgressView: UIProgressView

var theBool: Bool
var myTimer: NSTimer
Run Code Online (Sandbox Code Playgroud)

这些功能将填充进度视图.你可以玩参数:

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
        }
    }
}
Run Code Online (Sandbox Code Playgroud)