Swift 4 - UIActivityViewController 分享到 Outlook 主题和标题
Swift 4 - UIActivityViewController share to Outlook Subject and Title
我正在使用 UIActivityViewController
将文本共享到 Outlook,一切正常,除了两件事,一个 我无法设置主题行和两个我无法设置我正在分享的标题,我的文字是htmltable 虽然我想显示预览标题,但它目前在我的实现中显示了它的第一部分(见屏幕截图)。
有没有办法设置标题和设置主题?
这是我的代码:
let activityViewController = UIActivityViewController(activityItems : [htmlString], applicationActivities: nil)
activityViewController.popoverPresentationController?.barButtonItem = self.shareButton
self.present(activityViewController, animated: true, completion: nil)
我试过这样设置主题:
activityViewController.setValue("This is my subject", forKey: "subject")
但是没用
我做错了什么?
这是我说的标题的截图:
但是没用
任何触发共享的视图控制器都应符合 UIActivityItemSource
协议以便设置:预览标题、电子邮件主题以及电子邮件的内容。
您可以自己尝试这个在点击按钮时触发分享的例子:
class ViewController: UIViewController, UIActivityItemSource {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
@IBAction func sharePressed(_ sender: Any) {
let item = [self, "Preview Title"] as [Any]
let activityViewController = UIActivityViewController(activityItems: item, applicationActivities: nil)
self.present(activityViewController, animated: true, completion: nil)
}
func activityViewControllerPlaceholderItem(_ activityViewController: UIActivityViewController) -> Any {
return ""
}
func activityViewController(_ activityViewController: UIActivityViewController, itemForActivityType activityType: UIActivity.ActivityType?) -> Any? {
return "<html><body><p style=\"background-color: red;\">Email body message with red background</p></body></html>"
}
func activityViewController(_ activityViewController: UIActivityViewController, subjectForActivityType activityType: UIActivity.ActivityType?) -> String {
return "Email Subject"
}
}
要获得此预期输出:
Outlook 和 Gmail 等不同 iOS 版本(iOS 11、iOS 12..)的一些应用程序表现不同: 一些取 body 的第一行并将其设置为主题。请务必针对您所针对的 iOS 版本以及您希望共享功能正确运行的应用程序进行测试。您还可以设置多个 itemForActivityType
以在共享时针对不同的应用程序定位逻辑。
我正在使用 UIActivityViewController
将文本共享到 Outlook,一切正常,除了两件事,一个 我无法设置主题行和两个我无法设置我正在分享的标题,我的文字是htmltable 虽然我想显示预览标题,但它目前在我的实现中显示了它的第一部分(见屏幕截图)。
有没有办法设置标题和设置主题?
这是我的代码:
let activityViewController = UIActivityViewController(activityItems : [htmlString], applicationActivities: nil)
activityViewController.popoverPresentationController?.barButtonItem = self.shareButton
self.present(activityViewController, animated: true, completion: nil)
我试过这样设置主题:
activityViewController.setValue("This is my subject", forKey: "subject")
但是没用
我做错了什么?
这是我说的标题的截图:
但是没用
任何触发共享的视图控制器都应符合 UIActivityItemSource
协议以便设置:预览标题、电子邮件主题以及电子邮件的内容。
您可以自己尝试这个在点击按钮时触发分享的例子:
class ViewController: UIViewController, UIActivityItemSource {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
@IBAction func sharePressed(_ sender: Any) {
let item = [self, "Preview Title"] as [Any]
let activityViewController = UIActivityViewController(activityItems: item, applicationActivities: nil)
self.present(activityViewController, animated: true, completion: nil)
}
func activityViewControllerPlaceholderItem(_ activityViewController: UIActivityViewController) -> Any {
return ""
}
func activityViewController(_ activityViewController: UIActivityViewController, itemForActivityType activityType: UIActivity.ActivityType?) -> Any? {
return "<html><body><p style=\"background-color: red;\">Email body message with red background</p></body></html>"
}
func activityViewController(_ activityViewController: UIActivityViewController, subjectForActivityType activityType: UIActivity.ActivityType?) -> String {
return "Email Subject"
}
}
要获得此预期输出:
Outlook 和 Gmail 等不同 iOS 版本(iOS 11、iOS 12..)的一些应用程序表现不同: 一些取 body 的第一行并将其设置为主题。请务必针对您所针对的 iOS 版本以及您希望共享功能正确运行的应用程序进行测试。您还可以设置多个 itemForActivityType
以在共享时针对不同的应用程序定位逻辑。