InAppSafariKit

Swift Package Manager

日本語はこちら

一个简单的软件包,用于在你的 SwiftUI 应用中使用 SFSafariViewController 打开 URL。它允许你使用 SFSafariViewController 以应用内浏览器的方式打开 URL,包括 Link 中的 URL。

特性

要求

安装

你可以使用 Swift Package Manager (SPM) 安装 InAppSafariKit。

  1. 在 Xcode 中打开你的项目。
  2. 选择 File > Add Package Dependency...
  3. 输入 https://github.com/Chronos2500/InAppSafariKit.git
  4. 设置版本规则和其他设置,然后单击 Add Package

用法

基本用法

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 配置如下:

有关详细示例,请查看 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