【问题标题】:LPLinkView backgroundColor not working in iOSLPLinkView backgroundColor 在 iOS 中不起作用
【发布时间】:2021-05-26 14:15:58
【问题描述】:

我正在使用 LinkPresentation 模块中的 LPLinkView 在我的应用程序中呈现丰富的链接。但是当我尝试更改 LPLinkView 的背景颜色时,它呈现如下。

当我尝试更改 LPLinkView 的子视图的背景颜色时,UIView 的子视图属性返回的数组中没有元素。这是我尝试过的

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

【问题讨论】:

  • 你能找到任何线索吗?
  • @SameerNawaz 我们无法更改视图的颜色。相反,我们可以切换界面风格,让它在 UI 中变得微妙。
  • 是的,我找到了解决办法

标签: ios swift iphone swiftui uikit


【解决方案1】:

我们无法更改设计,但我们可以从中获取内容并创建自己的视图。

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) }
        }
    }
}

可以调用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 }
        }
    }
}

【讨论】:

    猜你喜欢
    • 2016-04-23
    • 1970-01-01
    • 1970-01-01
    • 2020-07-09
    • 1970-01-01
    • 2013-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多