iOS
 Computer >> コンピューター >  >> プログラミング >> iOS

【Swift】iOSアプリにWebView(WKWebView)を実装してWebページを表示する方法

iOSアプリ開発をしていると、アプリ内でWebページやWebコンテンツを表示したい場面に何度も出会います。そんなときに活躍するのがWebViewです。

Appleの公式ドキュメントによると、WebViewは「インタラクティブなWebコンテンツを表示するオブジェクト」であり、いわゆる「アプリ内ブラウザ」として利用できます。

この記事では、SwiftとWebKitフレームワークを使ってWebView(WKWebView)を作成し、実際にWebページを読み込んで表示するまでの手順を、ステップごとにわかりやすく解説します。

WebView(WKWebView)とは?

iOSでWebコンテンツを表示するためのクラスは、かつてのUIWebViewから、現在はWKWebViewが標準となっています。WKWebViewはWebKitフレームワークに含まれており、高速なレンダリングやJavaScriptとの連携など、UIWebViewより優れたパフォーマンスと機能を提供します。新規開発ではWKWebViewを使用するのが推奨されています。

WebViewを実装する手順

ステップ1:Xcodeでプロジェクトを作成する

Xcodeを開き、「Single View Application」(新しいXcodeではAppテンプレート)を選択して新規プロジェクトを作成します。ここではプロジェクト名を「WebViewSample」とします。

ステップ2:WebKitモジュールをインポートする

ViewController.swiftファイルを開き、先頭でWebKitモジュールをインポートします。

import WebKit

ステップ3:WKWebViewのプロパティを追加する

ViewController.swift内に、WKWebView型のプロパティを宣言します。

var webView: WKWebView!

ステップ4:WKUIDelegateを採用する

ViewControllerクラスにWKUIDelegateデリゲートを追加します。これにより、アラート表示などのUIに関するイベントをハンドリングできるようになります。

ステップ5:loadView()メソッドをオーバーライドする

ViewController.swiftに以下のloadView()メソッドを追加します。ここでWKWebViewのインスタンスを生成し、ビューとしてセットしています。

override func loadView() {
    let webConfiguration = WKWebViewConfiguration()
    webView = WKWebView(frame: .zero, configuration: webConfiguration)
    webView.uiDelegate = self
    view = webView
}

ステップ6:viewDidLoadでURLリクエストを作成して読み込む

viewDidLoad内で表示したいURLのリクエストを生成し、webView.load()で読み込みます。ここでは例としてAppleの公式サイトを読み込んでいます。

override func viewDidLoad() {
    super.viewDidLoad()
    let myURL = URL(string: "https://www.apple.com")
    let myRequest = URLRequest(url: myURL!)
    webView.load(myRequest)
}

ステップ7:アプリを実行する

シミュレーターまたは実機でアプリをビルドして実行すると、画面全体に指定したWebページが表示されます。

完成コード(ViewController.swift全文)

import UIKit
import WebKit

class ViewController: UIViewController, WKUIDelegate {

    var webView: WKWebView!

    override func viewDidLoad() {
        super.viewDidLoad()
        let myURL = URL(string: "https://www.apple.com")
        let myRequest = URLRequest(url: myURL!)
        webView.load(myRequest)
    }

    override func loadView() {
        let webConfiguration = WKWebViewConfiguration()
        webView = WKWebView(frame: .zero, configuration: webConfiguration)
        webView.uiDelegate = self
        view = webView
    }
}

【Swift】iOSアプリにWebView(WKWebView)を実装してWebページを表示する方法

補足:さらに実用的にするポイント

  • ナビゲーションイベントを制御したい場合: WKNavigationDelegateを採用すると、ページの読み込み開始・完了・失敗などのタイミングで処理を追加できます。
  • HTTP(非SSL)サイトを表示したい場合: App Transport Security(ATS)により、デフォルトではHTTPS接続のみ許可されています。HTTPサイトを表示するにはInfo.plistに例外設定(NSAllowsArbitraryLoadsなど)が必要です。
  • 戻る・進むボタンを実装したい場合: webView.goBack()やwebView.goForward()、canGoBack / canGoForwardプロパティを組み合わせることで、簡単なブラウザUIを構築できます。

以上が、SwiftでiOSアプリにWebViewを実装する基本の手順です。まずはシンプルなURL読み込みから始めて、必要に応じてデリゲートやカスタムUIを追加していくと良いでしょう。

  1. 【Android】XMLファイルを使ってアニメーションを作成する方法をわかりやすく解説

    この記事では、AndroidアプリにおいてXMLファイルを使用してアニメーションを作成する方法を、実際のコード例とともに段階的に解説します。View Animation(Tween Animation)は、res/animディレクトリに配置したリソースファイルとして定義できるため、フェードインやズーム、点滅といった演出をJava側のコードをほとんど書かずに実現できるのが特徴です。 ステップ1:新規プロジェクトの作成 Android Studioを起動し、メニューから「File」⇒「New Project」を選択して新しいプロジェクトを作成します。ウィザードに従って必要な情報を入力し、プロジェク

  2. SwiftでRealmデータベースをiOSアプリに導入する方法|CRUD操作を学べるToDoアプリ開発ガイド

    こんにちは!この記事では、RealmデータベースをiOSアプリに追加する方法を解説します。シンプルなToDoアプリを作りながら、RealmデータベースにおけるCRUD(Create=作成、Read=読み取り、Update=更新、Delete=削除)操作の実装方法を学んでいきましょう。Realmとは?Realmは、開発者にとって扱いやすく使い勝手の良いオープンソースのモバイル向けデータベースです。iOSアプリではCore Dataの代替として利用することもできます。Realmはクロスプラットフォーム対応のモバイルデータベースです。そのため、ネイティブのAndroid・iOSアプリはもちろん、Re