今回作成するアプリ
SwiftUIでアプリにWebページを埋め込むにはどうすればいいでしょうか?
SafariViewのようなウェブページであるSafariに遷移する方法ではなく、ウェブページのコンテンツ自体をアプリに埋め込む方法です。
それにはWKWebViewと呼ばれる技術を用いれば実現できるのですが、今回はその実装方法をご紹介します。
実装
コード
import SwiftUI
import WebKit
struct WebView: UIViewRepresentable {
let loardUrl: URL
func makeUIView(context: Context) -> WKWebView {
return WKWebView()
}
func updateUIView(_ uiView: WKWebView, context: Context) {
let request = URLRequest(url: loardUrl)
uiView.load(request)
}
}
struct ContentView: View {
var body: some View {
WebView(loardUrl: URL(string: "https://www.apple.com")!)
}
}
解説
WebView 構造体が UIViewRepresentable プロトコルを満たすように実装されています。
makeUIView(context:) メソッドで WKWebView インスタンスを作成し、updateUIView(_:context:) メソッドでリクエストをロードします。
最後に、 ContentView で WebView を呼び出しています。
参考文献
環境
macOS Ventura 13.0.1
Xcode 14.2
iOS 16.2
アイキャッチ画像 出典: App.com