Swift学習2日目、自分用の備忘録です。
インディケーターを表示後、ロードが完了したらWebサイトを表示するコードです。
ストーリーボードに以下を追加
①Activity Indicator View:ロード中に表示するインディケーター
②Toolbar:戻るボタンと進むボタンを配置するためのツールバーを下部に設置
③Bar Button Item:戻るボタンと進むボタンをToolbar情に配置
④Fixed Space Bar Button Item:戻るボタンと進むボタンの間にスペースを配置
コード
import UIKit
import WebKit // ライブラリをインポート
class ViewController: UIViewController, WKNavigationDelegate { // デリゲートを追加
@IBOutlet weak var indicater: UIActivityIndicatorView! // ローディングのインディケーターを追加
@IBOutlet weak var toolbar: UIToolbar! // 戻るボタンを並べたツールバー
var webview = WKWebView()
override func viewDidLoad() {
super.viewDidLoad()
// ウェブビューの大きさを決める
webview.frame = CGRect(x: 0, y: 0, width: view.frame.size.width, height: view.frame.size.height - toolbar.frame.size.height)
// Viewにウェブビューを追加
view.addSubview(webview)
webview.navigationDelegate = self
// URLをロード
let url = URL(string: "https://text.com/")
let request = URLRequest(url: url!)
webview.load(request)
indicater.layer.zPosition = 2 // インディケーターをウェブビューより手前に配置
}
// 読み込みが開始されたときに呼ばれるデリゲートメソッド
func webView(_ webView: WKWebView, didCommit navigation: WKNavigation!) {
indicater.isHidden = false
indicater.startAnimating()
}
// ロードが完了したときに呼ばれるデリゲートメソッド
func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
indicater.isHidden = true
indicater.stopAnimating()
}
@IBAction func back(_ sender: Any) {
webview.goBack() // 戻るボタン
}
@IBAction func go(_ sender: Any) {
webview.goForward() // 進むボタン
}
}