はじめに
昨日に引き続き、KeyboardKitでお世話になっているdanielsaidiさんのライブラリを見てたらWebViewKitというものを見つけました。
便利だったので紹介します。
ただSFSafariViewControllerを使うためだけにライブラリを使うのは気が引けると思うので中身のコードも載せときます。
動画
使い方
import SwiftUI
import WebViewKit
struct ContentView: View {
@State var isSafariWebView: Bool = false
private var url = "https://danielsaidi.github.io/WebViewKit/documentation/webviewkit/getting-started/"
var body: some View {
VStack {
Button {
isSafariWebView = true
} label: {
Text("表示")
}
}
.fullScreenCover(isPresented: $isSafariWebView) {
SafariWebView(url: URL(string: url)!) { configuration in
configuration.dismissButtonStyle = .close
configuration.preferredBarTintColor = .green
configuration.preferredControlTintColor = .purple
}
.edgesIgnoringSafeArea(.all)
}
}
}
カスタマイズ
左上のボタンスタイル
configuration.dismissButtonStyle = .close // 閉じる
configuration.dismissButtonStyle = .cancel // キャンセル
configuration.dismissButtonStyle = .done // 完了
コントロールバーの色
configuration.preferredBarTintColor = .green
コントロールバーのテキストの色
configuration.preferredControlTintColor = .purple
その他もあったらコメントで教えてください!
SFSafariViewControllerだけ使いたい方
使い方は同じです。
import SwiftUI
import SafariServices
struct SafariWebView: UIViewControllerRepresentable {
init(
url: URL,
configuration: SFSafariViewController.Configuration = .init(),
controllerConfiguration: @escaping (SFSafariViewController) -> Void = { _ in }) {
self.url = url
self.configuration = configuration
self.controllerConfiguration = controllerConfiguration
}
private let url: URL
private let configuration: SFSafariViewController.Configuration
private let controllerConfiguration: (SFSafariViewController) -> Void
func makeUIViewController(context: Context) -> SFSafariViewController {
let controller = SFSafariViewController(url: url, configuration: configuration)
controllerConfiguration(controller)
return controller
}
func updateUIViewController(_ safariViewController: SFSafariViewController, context: Context) {}
}
おわり
便利ですねー