Swift・iOS

Swiftを中心に学んだことを記録に残すブログです。技術に関係ない記事もたまに書いています。

【SwiftUI】SFSafariViewControllerを使えるようにする

 

はじめに

UIViewControllerRepresentableを使って、SFSafariViewControllerをSwiftUIで使用できるようにしてみました。

※WKWebViewをSwiftUIで使いたい場合は以下記事を参考にしてみてください。

【SwiftUI】WKWebViewを使えるようにする - Swift・iOS

 

開発環境

 

実装

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ボタンを変更する方法を書いている記事がほとんどないですね。知ってるのが当たり前だからでしょうか・・・自分は知らなくてググりました笑

 

参考