LPLinkView backgroundColor 在 iOS 中不起作用

Posted

技术标签:

【中文标题】LPLinkView backgroundColor 在 iOS 中不起作用【英文标题】:LPLinkView backgroundColor not working in 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 中变得微妙。 是的,我找到了解决办法 【参考方案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 
        
    

【讨论】:

以上是关于LPLinkView backgroundColor 在 iOS 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

打开和关闭窗体动画

UIImage 方向问题

Mongoose:查找所有引用的文档

如何正确地将安全区域插图添加到 UIStackView?

swift入门学习-与Objective-c的对比

Flutter App:背景不会从黑色变为蓝绿色