我有一个ShareLink要分享的图片
ShareLink(item: image) {
Image(systemName: "square.and.arrow.up")
}
Run Code Online (Sandbox Code Playgroud)
现在,在我可以共享此图像之前,我必须使用某些函数生成它
ShareLink(item: image) {
Image(systemName: "square.and.arrow.up")
}
Run Code Online (Sandbox Code Playgroud)
我ShareLink本身位于上下文菜单中。getImage()我的问题是,每次刷新视图或打开上下文菜单时生成此图像(调用函数)的成本太高。如果用户点击此共享链接,然后运行代码,然后将结果显示在共享表中,有什么方法可以运行代码吗?
注意:我知道可以使用 UIKit 作为后备来生成共享表,使用如下函数:
@State var image: UIImage
var getImage() {
// some code that updates @State variable
}
Run Code Online (Sandbox Code Playgroud)
如本文所示:https://medium.com/swift-products/sharesheet-uiactivityviewcontroller-swiftui-47abcd69aba6
我想知道是否有办法用新的 ios16 来做到这一点ShareLink
编辑我还没有设法让它与 Sharelink 一起使用。这是我正在使用的解决方法:
func actionSheet() {
guard let urlShare = URL(string: "https://developer.apple.com/xcode/swiftui/") else { return }
let activityVC = UIActivityViewController(activityItems: [urlShare], applicationActivities: nil)
UIApplication.shared.windows.first?.rootViewController?.present(activityVC, animated: true, completion: nil)
}
Run Code Online (Sandbox Code Playgroud)
哪个调用
Button {
shareCollage()
} label: {
Label("Share Collage", systemImage: "square.and.arrow.up")
}
Run Code Online (Sandbox Code Playgroud)
来源:https ://github.com/charelF/StickerPaste/blob/main/StickerPaste/ContentView.swift
我用于@State var imageForShare: ImageFile? = nil我想分享的图像。
我认为您不需要每次刷新视图时都生成图像。只需async在图像内容发生变化时(以某种方式)生成图像,这样 SwiftUI 就知道何时需要更新图像。
由于异步生成在后台工作,因此它不应该影响您的视图渲染。
| 归档时间: |
|
| 查看次数: |
2345 次 |
| 最近记录: |