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