如何在 UIActivityViewController 中显示带有文本的 URL 图标?

How to show URL icon with text in UIActivityViewController?

我尝试了不同的方法来显示带有文本的 URL 图标,但没有成功。这是代码及其输出片段

示例 1:

let text = "I am text"
let myWebsite = URL(string:"https://www.youtube.com/")
let shareAll = [text, myWebsite] as [Any]
let activityViewController = UIActivityViewController(activityItems: shareAll, applicationActivities: nil)
self.present(activityViewController, animated: true, completion: nil)

输出 1: UIActivity View Messages View

示例 2:

let myWebsite = URL(string:"https://www.youtube.com/")
let shareAll = [myWebsite] as [Any]
let activityViewController = UIActivityViewController(activityItems: shareAll, applicationActivities: nil)
self.present(activityViewController, animated: true, completion: nil)

输出 2:

UIActivity View

必填: 我想要示例 1 的输出 2 中的 URL 图标。

共享数据和显示数据是有区别的——我认为在你的情况下,显示即将共享的数据.

我可能是错的,但如果不是,您 实际上 能够共享数据 - 在本例中是 UIImage 和文本 - 但希望显示什么关于要分享。不久前我遇到了这个问题。这是我的代码。看看它是否可以帮助你 - 基本上你需要将元数据添加到 UIActivityViewController delegate.

func activityViewControllerLinkMetadata(_ activityViewController: UIActivityViewController) -> LPLinkMetadata? {
    let shareImage = preview.uiImage.adjustedForShareSheetPreviewIconProvider()
    let imageProvider = NSItemProvider(object: shareImage)
    let metadata = LPLinkMetadata()
    metadata.imageProvider = imageProvider
    metadata.title = "Title"
    return metadata
}

根据需要调整 shareImagetitle

编辑

我正在使用我的代码,但不完整。 adjustedForShareSheetPreviewIconProvider()UIImage 的一部分,因此,它假定了这一点。在我的代码中,我实际上是将 GLKView 调用到 return 这个 UIImage,然后在元数据中以这种方式使用它。

因此,如果您的图像是 return 从 URL 编辑的,作为图标 并且 是(或可以转换为)UIImage,就像我上面的代码一样将它添加到元数据中。