簡體   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