はじめに
UIViewControllerRepresentableを使って、SFSafariViewControllerをSwiftUIで使用できるようにしてみました。
※WKWebViewをSwiftUIで使いたい場合は以下記事を参考にしてみてください。
【SwiftUI】WKWebViewを使えるようにする - Swift・iOS
開発環境
- macOS Big Sur 11.2.3
- Xcode 12.4
- Swift 5.3.2
実装
SafariView.swift
import SwiftUI import SafariServices struct SafariView: UIViewControllerRepresentable { var url: URL func makeUIViewController(context: UIViewControllerRepresentableContext<SafariView>) -> SFSafariViewController { let safariViewController = SFSafariViewController(url: url) safariViewController.dismissButtonStyle = .close return safariViewController } func updateUIViewController(_ uiViewController: SFSafariViewController, context: UIViewControllerRepresentableContext<SafariView>) { } }
使用例
ContentView.swift
if let url = URL(string: "{表示したいURLの文字列}") { SafariView(url: url) }
おわりに
他の記事に似通ってしまいそうな(この記事の存在価値がないかもしれない)ので、呼び出し方の例を記載したり、謎に"dismissButtonStyle"でDoneボタンの見た目を変更したりしました・・・。"dismissButtonStyle"を調べていて気づいたのですが、Doneボタンを変更する方法を書いている記事がほとんどないですね。知ってるのが当たり前だからでしょうか・・・自分は知らなくてググりました笑