【问题标题】:Share Sheet with custom title + remote image on iOS13iOS13上带有自定义标题+远程图像的共享表
【发布时间】:2020-03-07 02:59:52
【问题描述】:

我正在为在 iOS13 上共享链接提供一个共享表。默认情况下,它将从共享 URL 获取工作表顶部的标题和图像,我想覆盖两者。我已经准备好标题,但图像是远程的,需要获取。最好是立即显示带有标题的共享表,然后再加载远程图像。

我发现UIActivityItemSource 中的一个新方法似乎可以做到这一点,所以我创建了一个自定义UIActivityItemSource 子类:

@objc class CustomURLItemSource: NSObject, UIActivityItemSource {

    ...

    func activityViewControllerPlaceholderItem(_ activityViewController: UIActivityViewController) -> Any {
        return shareURL
    }

    func activityViewController(_ activityViewController: UIActivityViewController, itemForActivityType activityType: UIActivity.ActivityType?) -> Any? {
        return shareURL
    }

    @available(iOS 13.0, *)
    func activityViewControllerLinkMetadata(_: UIActivityViewController) -> LPLinkMetadata? {
        let metadata = LPLinkMetadata()
        metadata.originalURL = shareURL
        metadata.url = shareURL
        metadata.title = "My custom title"
        metadata.imageProvider = NSItemProvider(contentsOf: imageURL)
        return metadata
    }
}

使用此项目源,我的自定义标题将显示,但标题旁边的图像将只是默认的 safari 图标。 iOS 如何期望我在此处提供图片或图片 url?

【问题讨论】:

    标签: ios swift ios13 uiactivityviewcontroller ios-sharesheet


    【解决方案1】:

    在我的例子中,在 activityViewControllerLinkMetadata 我添加了图标图像:

    let image = UIImage(named: "app_icon")!
    let imageProvider = NSItemProvider(object: image)
    let metadata = LPLinkMetadata()
            
    metadata.imageProvider = imageProvider
    

    在我将其呈现为:

    let url = URL(string: "your_url_string")
    let shareSheetVC = UIActivityViewController(activityItems: [url, self], applicationActivities: nil)
                
    present(shareSheetVC, animated: true, completion: nil)
    

    【讨论】:

      猜你喜欢
      • 2011-01-06
      • 1970-01-01
      • 1970-01-01
      • 2014-10-20
      • 2019-01-28
      • 1970-01-01
      • 2017-07-13
      • 1970-01-01
      • 2014-02-18
      相关资源
      最近更新 更多