【Swift】WKWebViewでWebページを表示
解説
・WebViewがdeprecated(非推奨)となり、今後はWebKit Viewを使用することになる
・インジケーターを一から設定し、座標やスタイルも設定
・インジケーターを起動させたり止めるには、WKNavigationDelegateでdidstart,didfinishを用意
・cachePolicy(キャッシュの設定)の詳しいことは、下記の記事がおすすめ。
↓
ソースコード
import UIKit import WebKit class ViewController: UIViewController,WKNavigationDelegate{ @IBOutlet weak var webView: WKWebView! //文字列となるURL let urlString = "https://www.youtube.com/watch?v=RHVA-K4XjjY" //インジゲーターを宣言 var indicator = UIActivityIndicatorView() override func viewDidLoad() { super.viewDidLoad() //インジケーターを起動 setIndicator() //文字列のURLをURL型にキャスト guard let url = URL(string: urlString) else { return } //URLリクエストを作成 //cachePolicy:Webページのキャッシュがあればそれを使用、なければリクエスト //timeoutInterVal:100秒でリクエストを終了 let urlRequest = URLRequest(url: url, cachePolicy: .returnCacheDataElseLoad, timeoutInterval: 100) //webViewで表示させる webView.load(urlRequest) } @IBAction func back(_ sender: Any) { //戻る webView.goBack() } @IBAction func go(_ sender: Any) { //進む webView.goForward() } @IBAction func refresh(_ sender: Any) { //更新 webView.reload() } func setIndicator() { //インジケーターを初期化 indicator = UIActivityIndicatorView() //インジケーターの座標とサイズ indicator.frame = CGRect(x: 0, y: 0, width: 100, height: 100) //インジケーターが止まった時に非表示にするか? indicator.hidesWhenStopped = true //インジケーターの色 indicator.style = .gray //webViewに追加 webView.addSubview(indicator) } func webView(_ webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!) { //インジケーターを回す indicator.startAnimating() } func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) { //インジケーターを止める indicator.stopAnimating() } }