簡體   English   中英

LPLinkView 背景顏色在 iOS 中不起作用

[英]LPLinkView backgroundColor not working in iOS

我正在使用 LinkPresentation 模塊中的 LPLinkView 在我的應用程序中呈現豐富的鏈接。 但是當我嘗試更改 LPLinkView 的背景顏色時,它呈現如下。

在此處輸入圖像描述

當我嘗試更改 LPLinkView 的子視圖的 backgroundColor 時,UIView 的子視圖屬性返回的數組中沒有元素。 這是我嘗試過的

let linkView = LPLinkView(metadata: metadata)
linkView.backgroundColor = .red
linkView.subviews.forEach { $0.backgroundColor = .red}

我們無法更改設計,但我們可以從中獲取內容並創建自己的視圖。

import SwiftUI
import LinkPresentation

struct LinkModel { let image: Image, title: String?, linkHost: String?, link: URL? }

class LinksDataModel: ObservableObject {
    
    static func fetchMetadata(for url: URL, completion: @escaping (LinkModel?) -> Void) {
        let metadataProvider = LPMetadataProvider()
        metadataProvider.startFetchingMetadata(for: url) { (metadata, error) in
            if let metadata = metadata {
                // load image
                metadata.imageProvider?.loadObject(ofClass: UIImage.self, completionHandler: { image, err in
                    if let uiImage: UIImage = image as? UIImage {
                        let image = Image(uiImage: uiImage)
                        completion(LinkModel(image: image, title: metadata.title,
                                             linkHost: metadata.url?.host, link: metadata.url))
                    } else { completion(nil) }
                })
            } else { completion(nil) }
        }
    }
}

您可以調用 function onAppear

@State private var linkModel: LinkModel? = nil

if let model = linkModel {
    LinkView(model: model)
}

.onAppear {
    LinksDataModel.fetchMetadata(for: url) { linkModel in
        if let model = linkModel {
            DispatchQueue.main.async { self.linkModel = model }
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM