ios - 从 SwiftUI 视图呈现 UIActivityViewController
问题描述
我正在尝试UIActivityViewController
从 SwiftUI 视图中呈现(共享表)。我创建了一个名为ShareSheet
conformed to的视图UIViewControllerRepresentable
来配置UIActivityViewController
,但实际呈现它并不是那么简单。
struct ShareSheet: UIViewControllerRepresentable {
typealias UIViewControllerType = UIActivityViewController
var sharing: [Any]
func makeUIViewController(context: UIViewControllerRepresentableContext<ShareSheet>) -> UIActivityViewController {
UIActivityViewController(activityItems: sharing, applicationActivities: nil)
}
func updateUIViewController(_ uiViewController: UIActivityViewController, context: UIViewControllerRepresentableContext<ShareSheet>) {
}
}
天真地这样做.sheet
会导致以下结果。
.sheet(isPresented: $showShareSheet) {
ShareSheet(sharing: [URL(string: "https://example.com")!])
}
有没有办法像通常呈现的那样呈现这个?就像覆盖一半屏幕一样?
解决方案
希望对你有帮助,
struct ShareSheetView: View {
var body: some View {
Button(action: actionSheet) {
Image(systemName: "square.and.arrow.up")
.resizable()
.aspectRatio(contentMode: .fit)
.frame(width: 36, height: 36)
}
}
func actionSheet() {
guard let data = URL(string: "https://www.apple.com") else { return }
let av = UIActivityViewController(activityItems: [data], applicationActivities: nil)
UIApplication.shared.windows.first?.rootViewController?.present(av, animated: true, completion: nil)
}
}
推荐阅读
- asp.net-core - 如何在具有 maxAllowedContentLength 的 IIS 上的 ASP.NET Core 中使用 MaxRequestBodySize?
- node.js - 如何在 nodejs 加密库中设置 aes cfb 反馈段大小?
- vb.net - 添加新列后无法访问 DataGridView 列名
- javascript - 检查给定数字是否是另一个小数的倍数
- sql - 跨数据库表减去常量
- sql - 如何使用 Big Query SQL Standard 将日期 YYYY-MM-DD 转换为字符串 YYYYMM?
- docker - 使用奇异性在snakemake中规则:未终止的带引号的字符串
- angular - 如何将 Aria 标签应用于 PrimeNG 组件的子元素?
- sql - 如何选择 MS ACCESS OLE 对象只有数据?
- pyarrow - 如何为 pyarrow 设置 libhdfs.so 的路径?