#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()
}
}