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 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章