WebUI 是一个 Swift 包,它提供了由 SwiftUI 封装的 WKWebView。
使用 WebUI
,您可以使用简单的 API 在 SwiftUI
中构建 WebView。
有关更深入的信息,请参阅API 文档。
使用 WebView(request:)
。
struct ContentView: View {
var body: some View {
WebView(request: URLRequest(url: URL(string: "https://example.com/")!))
}
}
使用 WebViewReader
。在 WebViewReader
的作用域内,您可以接收 WebViewProxy
。
您可以通过 WebViewProxy
在 WebViewReader
的作用域内操作 WebView
。
struct ContentView: View {
var body: some View {
WebViewReader { proxy in
WebView()
.onAppear {
proxy.load(request: URLRequest(url: URL(string: "https://www.example.com")!))
}
Button("Reload") {
proxy.reload()
}
}
.padding()
}
}
使用 WebView(configuration:)
。
struct ContentView: View {
let configuration: WKWebViewConfiguration
init() {
configuration = .init()
configuration.allowsInlineMediaPlayback = true
}
var body: some View {
WebView(configuration: configuration)
}
}
还有其他有用的 API 可用。
struct ContentView: View {
var body: some View {
WebView()
.allowsLinkPreview(true)
.refreshable()
}
}
使用 uiDelegate(_:)
, navigationDelegate(_:)
方法。
final class MyUIDelegate: NSObject, WKUIDelegate {}
final class MyNavigationDelegate: NSObject, WKNavigationDelegate {}
struct ContentView: View {
var body: some View {
WebView()
.uiDelegate(MyUIDelegate())
.navigationDelegate(MyNavigationDelegate())
}
}
WebUI 可通过 Swift Package Manager 获得。
Xcode
CLI
创建描述依赖项的 Package.swift
。
// swift-tools-version: 6.0
import PackageDescription
let package = Package(
name: "SomeProduct",
products: [
.library(name: "SomeProduct", targets: ["SomeProduct"])
],
dependencies: [
.package(url: "https://github.com/cybozu/WebUI.git", exact: "3.0.0")
],
targets: [
.target(
name: "SomeProduct",
dependencies: [
.product(name: "WebUI", package: "WebUI")
]
)
]
)
在终端中运行以下命令。
$ swift package resolve
此库不收集或跟踪用户信息,因此不包含 PrivacyInfo.xcprivacy 文件。
此仓库包含 iOS 和 macOS 的演示应用程序。
打开 Examples/Examples.xcodeproj 并运行它。