繁体   English   中英

iOS13上带有自定义标题+远程图像的共享表

[英]Share Sheet with custom title + remote image on iOS13

我正在创建一个共享表,用于在 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?

就我而言,在 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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM