SwiftUI: невозможно использовать UIActivityViewController для обмена изображениями - PullRequest
0 голосов
/ 30 января 2020

Я сделал UIViewControllerRepresentable для деформации UIActivityViewController в SwiftUI следующим образом:

struct ShareSheet: UIViewControllerRepresentable {
   typealias Callback = (_ activityType: UIActivity.ActivityType?, _ completed: Bool, _ returnedItems: [Any]?, _ error: Error?) -> Void
   let activityItems: [Any]
   let applicationActivities: [UIActivity]? = nil
   let excludedActivityTypes: [UIActivity.ActivityType]? = nil
   let callback: Callback? = nil

func makeUIViewController(context: Context) -> UIActivityViewController {
    let controller = UIActivityViewController(
        activityItems: activityItems,
        applicationActivities: applicationActivities)
    controller.excludedActivityTypes = excludedActivityTypes
    controller.completionWithItemsHandler = callback
    return controller
}

func updateUIViewController(_ uiViewController: UIActivityViewController, context: Context) {
    // nothing to do here
}

Проблема заключается в следующем: когда я передаю объект UIImage, он работает следующим образом:

ShareSheet(activityItems: [UIImage(named: "doc")!])

Но если Я передаю объект Image, он не работает, например:

ShareSheet(activityItems: [Image("doc")])

В моем приложении у меня есть только изображения в объекте Image, но не UIImage, поэтому я могу деформировать изображение в UIImage или я должен сделать что-то еще?

1 Ответ

0 голосов
/ 27 марта 2020

Причина в том, что Image ("do c") имеет тип View, который не может быть обработан UIKit. Напротив, UIImage (названный: "do c") имеет тип UIImage, поэтому он работает.

...