Here's a sharelinkDropin for those who needs it. The following would not dismiss the presenting view when save to photos.
//
// SharelinkDropin.swift
//
import SwiftUI
struct SharelinkDropin<Label: View>: View {
let item: URL
@ViewBuilder
let label: Label
@State var isPresented: Bool = false
var body: some View {
Button {
self.isPresented.toggle()
} label: {
self.label
}
.sheet(isPresented: self.$isPresented, content: {
ActivityViewController(activityItems: [self.item])
})
}
}
fileprivate
struct ActivityViewController: UIViewControllerRepresentable {
var activityItems: [Any]
var applicationActivities: [UIActivity]? = nil
func makeUIViewController(context: UIViewControllerRepresentableContext<ActivityViewController>) -> UIActivityViewController {
let controller = UIActivityViewController(activityItems: activityItems, applicationActivities: applicationActivities)
return controller
}
func updateUIViewController(_ uiViewController: UIActivityViewController, context: UIViewControllerRepresentableContext<ActivityViewController>) {}
}
#Preview {
SharelinkDropin(item: URL.placeholderIcon, label: {
Text("Share")
})
}
Topic:
UI Frameworks
SubTopic:
SwiftUI
Tags: