在 SwiftUI 中,你可以使用 UIActivityViewController
来实现系统分享功能。由于 SwiftUI 目前没有直接提供类似的视图或修饰符,你需要使用 UIViewControllerRepresentable
协议来创建一个可以在 SwiftUI 视图中使用的 ActivityView
。
首先,你需要创建一个遵循 UIViewControllerRepresentable
协议的结构体,用于包装 UIActivityViewController
:
import SwiftUIstruct ActivityView: UIViewControllerRepresentable {let activityItems: [Any]let applicationActivities: [UIActivity]? = nilfunc makeUIViewController(context: Context) -> UIActivityViewController {let controller = UIActivityViewController(activityItems: activityItems,applicationActivities: applicationActivities)return controller}func updateUIViewController(_ uiViewController: UIActivityViewController, context: Context) {// 更新逻辑,如果需要的话}
}
接下来,在你的 SwiftUI 视图中,你可以使用 sheet(isPresented:onDismiss:content:)
修饰符来展示 ActivityView
:
import SwiftUIstruct ContentView: View {@State private var isSharing = falsevar body: some View {Button("Share App") {self.isSharing = true}.sheet(isPresented: $isSharing) {// 用你的APP分享内容替换下面的内容ActivityView(activityItems: ["Check out this app!"])}}
}
注意,你要分享的内容应该是能够被 UIActivityViewController
处理的类型,比如 URL
, String
, UIImage
, 等。
示例:
if let appLink = URL(string: "https://itunes.apple.com/cn/app/id444934666") {ActivityView(activityItems: [appLink])
}