SafariView 是一个软件包,如果您想在应用程序内部显示网页内容(例如您的网站),可以使用它。 在 UIKit 中有一个名为 SFSafariController
的组件可以实现此功能,但此组件不适用于 SwiftUI。 如果您使用此软件包,您可以像与原生 SwiftUI View 交互一样使用它。
⚠️ 重要提示
由于此视图使用 SFSafariViewController,请注意 Apple 针对该特定组件的规则。 您可以在此处查看文档
“根据 App Store 审核指南,此视图(控制器)必须用于向用户清晰地呈现信息;该控制器不得被其他视图或层隐藏或遮蔽。 此外,应用程序不得使用此视图在用户不知情或未经其同意的情况下跟踪用户。”
import SwiftUI
import SafariView
struct ContentView: View {
@State private var isPresented = false
var body: some View {
Button("Open in SafariView") {
isPresented.toggle()
}
.sheet(isPresented: $isPresented) {
SafariView(url: URL(string: "https://apple.com")!)
}
}
}
如果您想查看关于如何使用的完整演示项目,请在此处查看 here。
此视图的初始化中唯一强制性的参数是 url
。
除此之外,您还可以在初始化器中指定可选参数以进行自定义。 可用参数
dismissButtonStyle
: 指定用于关闭屏幕的按钮类型preferredBarTintColor
: 用于为导航栏和工具栏的背景着色的颜色(默认值:.systemBackground)preferredControlTintColor
: 用于为导航栏和工具栏上的控件按钮着色的颜色(默认值:.tintColor/.accentColor)isBarCollapsing
: 如果滚动标题栏(默认值:false)entersReaderIfAvailable
: 一个值,指定 Safari 是否应进入阅读器模式(如果可用)(默认值:false)一个可能的初始化示例可以是
SafariView(
url: URL(string: "https://apple.com")!,
isBarCollapsing: true,
entersReaderIfAvailable: true)
如果您发现任何错误或对改进有任何想法,您可以在此处创建一个 issue。 尝试尽可能精确地描述您的问题。 也欢迎您贡献并创建 Pull Request。
此项目根据 MIT 许可证获得许可。
有关更多信息,请参见 LICENSE。