【Swift】WKWebViewの基本的な使い方

下記ブログの転載です！
https://rc-code.info/ios/post-241/

iOSにて、Webページを表示する必要があったので、**`WKWebView`** の基本的な使い方を備忘録。
&nbsp;

## WKWebView の使い方

**`WKWebView`** の基本的な使い方です。
下記が[公式のサンプルコード](https://developer.apple.com/documentation/webkit/wkwebview)です。

WKWebView を利用する際は **`UIKit`** と **`WebKit`** を import します。
WKWebView の initialize は **`CGRect`** と **`WKWebViewConfiguration`** を引数にとります。
該当するURLページを開くには、WKWebView の **`load関数`** を実行します。

```swift

import UIKit
// 1 WebKit の import
import WebKit

class ViewController: UIViewController {
	
	var webView: WKWebView!
	
	override func loadView() {

		// 2 WKWebViewConfiguration の生成
		let webConfiguration = WKWebViewConfiguration()
		// 3 WKWebView に Configuration を引き渡し initialize
		webView = WKWebView(frame: .zero, configuration: webConfiguration)
		// 4 WKUIDelegate の移譲先として self を登録
		webView.uiDelegate = self
		// 5 WKNavigationDelegate の移譲先として self を登録
		webView.navigationDelegate = self
		// 6 view に webView を割り当て
		view = webView
	}

	override func viewDidLoad() {
		super.viewDidLoad()
			
		// 7 URLオブジェクトを生成
		let myURL = URL(string:"https://www.apple.com")
		// 8 URLRequestオブジェクトを生成
		let myRequest = URLRequest(url: myURL!)

		// 9 URLを WebView にロード
		webView.load(myRequest)
	}
}

// MARK: - 10 WKWebView ui delegate
extension ViewController: WKUIDelegate {
	// delegate
}

// MARK: - 11 WKWebView WKNavigation delegate
extension ViewController: WKNavigationDelegate {
	// delegate
}

```
&nbsp;

### 1　WebKit　の　import
WebView関連のコードを扱うには**`WebKit`を`import`**する必要があります。
冒頭に`import WebKit`を記載すると、XcodeにてWebView関連の補完が効くようになるかと思います。

### ２　WKWebViewConfiguration　の生成
`WKWebViewConfiguration`は`WKWebView`の初期化時に参照される設定プロパティが含まれるクラスです。
`WKWebViewConfiguration`を使用すると、Webページがレンダリングされるまでの時間、メディア再生の処理方法、ユーザーが選択できるアイテムの細分性、およびその他の多くのオプションを決定できます。

`WKWebViewConfiguration`は、**`WKWebView`が最初に初期化されたときにのみ**使用されます。このクラスを使用して、**`WKWebView`の作成後にその設定を変更することはできません**。

### 3　WKWebView　を　initialize
`WKWebView`の初期化には**frame引数**に**WebViewのサイズ**、**configuration引数**に生成した**WKWebViewConfigurationのインスタンス**を引き渡します。

### 4　WKUIDelegate　の移譲先として　self　を登録
`WKWebView`の**`uiDelegate`**プロパティに**`self`**をセットする事で、**インターフェースに関わるWebViewの関数をクラス内で扱う事ができる**ようになります。

### 5　WKNavigationDelegate　の移譲先として　self　を登録
`WKWebView`の**`navigationDelegate`**プロパティに`self`をセットする事で、**振る舞いに関わるWebViewの関数をクラス内で扱う事ができる**ようになります。

### 6　view　に　webView　を割り当て
生成した`WKWebView`のインスタンスをControllerのviewに割り当てます。

### 7　URLオブジェクトを生成
表示したいURLのStringをURLクラスのstring引数に指定し、インスタンスを生成します。

### 8　URLRequestオブジェクトを生成
生成したURLクラスのインスタンスをURLRequestクラスのurl引数に指定し、インスタンス生成します。

### 9　URLを　WebView　にロード
`WKWebView`の**load関数**にURLRequestインスタンスを引き渡し、実行します。
この関数を叩くことで、webViewのリクエストが走ります。

### 10 WKWebView ui delegate
WKWebView ui delegate の部分には、`WKWebView`の**インターフェースに関わるdelegate関数**を記述します。
詳細は[公式ドキュメント](https://developer.apple.com/documentation/webkit/wkuidelegate)参照。
&nbsp;

### 11 WKWebView WKNavigation delegate
WKWebView WKNavigation delegate の部分には、`WebView`の**振る舞いに関わるdelegate関数**を記述します。
詳細は[公式ドキュメント](https://developer.apple.com/documentation/webkit/wknavigationdelegate)参照。
&nbsp;

## 実行環境
**Mac:** 10.13.6
**XCode:** 10.1
**Swift:** 4.2.1
&nbsp;

## 参考ドキュメント
[公式 WKWebView ドキュメント](https://developer.apple.com/documentation/webkit/wkwebview)
[公式 WKWebView ui delegate ドキュメント](https://developer.apple.com/documentation/webkit/wkuidelegate)
[公式 WKWebView WKNavigation delegate ドキュメント](https://developer.apple.com/documentation/webkit/wknavigationdelegate)
&nbsp;
&nbsp;