我正在尝试从SwiftUI视图中呈现UIActivityViewController
(共享面板)。 我创建了一个名为ShareSheet
的视图,符合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")!])
}
有没有办法像通常展示一样,即覆盖半个屏幕?
UIApplication.shared.windows.first?.rootViewController?.present(av, animated: true, completion: nil)
将无法正确获取vc。 - Kirillwindows.first.present
时出现了问题。根据OP的版本,我改用了.sheet
。需要注意的是,在共享表中键盘无法正常工作。如果你的表格不是作为父视图的一部分包含的话,响应链会很脆弱,我转而使用最外层的父视图。看起来这是iOS15带来的新问题。 - unB