将swift与Xcode8一起使用
以下是我的视图controller.swift
import UIKit
import WebKit
class ViewController: UIViewController, WKNavigationDelegate {
var XWebview: WKWebView!
var activity = UIActivityIndicatorView(activityIndicatorStyle: .whiteLarge)
override func loadView() {
super.loadView()
self.XWebview = WKWebView()
self.XWebview.navigationDelegate = self
self.view = self.XWebview
}
override func viewDidLoad() {
XWebview.navigationDelegate = self
activity.center = self.view.center
activity.color = UIColor.gray
XWebview.addSubview(activity)
super.viewDidLoad()
let XURL = NSURL(string: "http://www.yahoo.com")
let XURLRequest = NSURLRequest(url: XURL! as URL)
XWebview.load(XURLRequest as URLRequest)
}
override var prefersStatusBarHidden: Bool {
return true
}
func webView(_ webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!) {
activity.startAnimating()
}
func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
activity.stopAnimating()
}
}
加载网页视图时我没有看到任何指示? 我做错了吗?
答案 0 :(得分:2)
您正在使用WKWebView
并实施了UIWebView
委托。它不会触发。您必须实现WKWebView
协议方法。
实现以下WKNavigationDelegate
协议方法以确定开始加载视图。这将在主框架导航开始时触发。
func webView(_ webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!)
确保您的活动指示器颜色与WKWebView
背景颜色不同。把它变成灰色
使用主队列显示/隐藏活动指示器。
DispatchQueue.main.async {
activity.startAnimating()
}
DispatchQueue.main.async {
activity.stopAnimating()
}
如果您的网络视图为白色,请使用grey
颜色作为活动指示。
var activity = UIActivityIndicatorView(activityIndicatorStyle: .gray)