Приложение iOS Share to Mail всегда показывает текст вверху и изображение внизу вместо следующего содержимого в массиве

#swift #swiftui

#swift #swiftui

Вопрос:

Я пытаюсь поделиться контентом из своего приложения с Mail. В частности, я хотел бы иметь:

  • некоторый текст вверху
  • изображение в середине
  • какой-то текст внизу

Однако, похоже, что весь мой текст перемещается наверх, а изображение заканчивается внизу. Что я делаю не так и как я могу выполнить этот порядок?

В настоящее время я делюсь

 let content: [Any] = ["Top text", UIImage(systemName: "pencil")!, "Bottom Text"]
  

и получите следующий результат, а это не то, что я хочу.

введите описание изображения здесь

Это код, который я использую.

 import SwiftUI

enum Coordinator {
    static func topViewController(_ viewController: UIViewController? = nil) -> UIViewController? {
        let vc = viewController ?? UIApplication.shared.windows.first(where: { $0.isKeyWindow })?.rootViewController
        if let navigationController = vc as? UINavigationController {
            return topViewController(navigationController.topViewController)
        } else if let tabBarController = vc as? UITabBarController {
            return tabBarController.presentedViewController != nil ? topViewController(tabBarController.presentedViewController) : topViewController(tabBarController.selectedViewController)
            
        } else if let presentedViewController = vc?.presentedViewController {
            return topViewController(presentedViewController)
        }
        return vc
    }
}

struct ContentView: View {
    
    func share() {
        let content: [Any] = ["Top text", UIImage(systemName: "pencil")!, "Bottom Text"]
        
        let activityViewController = UIActivityViewController(activityItems: content, applicationActivities: nil)
        let viewController = Coordinator.topViewController()
        activityViewController.popoverPresentationController?.sourceView = viewController?.view
        activityViewController.completionWithItemsHandler = {(activityType: UIActivity.ActivityType?, completed: Bool, returnedItems: [Any]?, error: Error?) in
        }
        
        viewController?.present(activityViewController, animated: true, completion: nil)
    }
    
    var body: some View {
        Button(action: share) {
            Text("Share")
        }
        .padding()
    }
}