一个简单的软件包,用于在你的 SwiftUI 应用中使用 SFSafariViewController
打开 URL。它允许你使用 SFSafariViewController
以应用内浏览器的方式打开 URL,包括 Link
中的 URL。
SFSafariViewController
在应用内打开来自 Link
的 URL。SFSafariViewController
的各种设置和呈现样式。@Environment(\.customSafariStyle)
更改默认设置。你可以使用 Swift Package Manager (SPM) 安装 InAppSafariKit。
https://github.com/Chronos2500/InAppSafariKit.git
。import SwiftUI
import InAppSafariKit
struct ContentView: View {
private let url = URL(string: "https://www.apple.com")!
var body: some View {
NavigationStack{
Form{
Link("Open Default Browser", destination: url)
Link("Open by InAppSafariKit (Default)", destination: url)
.OpenURLInAppSafari()
}
}
}
}
只需将 .OpenURLInAppSafari()
修饰符添加到 Link
,即可使用 SFSafariViewController
在应用内打开链接。 要将其应用于应用内的所有链接,请将 .OpenURLInAppSafari()
修饰符添加到父视图。 默认情况下,SFSafariViewController
配置如下:
entersReaderIfAvailable
: false
barCollapsingEnabled
: true
dismissButtonStyle
: .done
preferredBarTintColor
: nil
preferredControlTintColor
: nil
modalPresentationStyle
: .fullScreen
有关详细示例,请查看 Examples 文件夹中的项目。
你可以使用 .OpenURLInAppSafari()
修饰符自定义 SFSafariViewController
的设置和呈现动画。
Link("Custom Bar Colors", destination: url)
.OpenURLInAppSafari(
preferredBarTintColor: .purple,
preferredControlTintColor: .white
)
![]() |
![]() |
通过 InAppSafariKit 打开 (默认) | preferredBarTintColor = .purple |
![]() |
![]() |
modalPresentationStyle = .pageSheet |
modalPresentationStyle = .overFullScreen |
你可以通过在父视图上使用 customSafariStyle
环境变量来更改子视图及其后代的默认样式。
@main
struct InAppSafariKitExampleApp: App {
var body: some Scene {
WindowGroup {
ContentView()
.environment(\.customSafariStyle,CustomSafariStyle(dismissButtonStyle: .cancel,preferredBarTintColor: .gray))
}
}
}
本项目基于 MIT 许可证发布。
Chronos2500 © 2025