SwiftUI - 使用 LinkPresentation 框架加载富链接时无法为 LPLinkView 设置框架

问题描述

我在 SwiftUI 项目中使用 LinkPresentation 框架在列表视图中显示丰富的链接。该链接正在显示,但我无法设置(更改)LPLinkView 的框架。 LPLinkView 被包裹在一个 HStack 中并显示一个列表中。


import SwiftUI
import LinkPresentation

struct ContentView: View {
    @State var redrawPreview = false
    let links: [StringLink]  = [StringLink(id: UUID(),string: "https://www.youtube.com/watch?v=HXoVSbwWUIk"),StringLink(id: UUID(),string: "https://www.youtube.com/watch?v=F2ojC6TNwws"),string: "https://www.youtube.com/watch?v=bz6GTYaIQXU")]
    var body: some View {
        List(links) { l in
            HStack {
                Image(systemName: "person.fill")
                    .resizable()
                    .scaledToFit()
                    .frame(width: 40.0,height: 40.0)
                LinkRow(previewURL: URL(string: l.string)!,redraw: self.$redrawPreview)
            }
        }.environment(\.defaultMinListRowHeight,50)
    }
}

struct LinkRow : UIViewRepresentable {
    
    var previewURL:URL
    @Binding var redraw: Bool
    
    func makeUIView(context: Context) -> LPLinkView {
        let view = LPLinkView(url: previewURL)
        
        let provider = LPMetadataProvider()
        provider.startFetchingMetadata(for: previewURL) { (Metadata,error) in
            if let md = Metadata {
                dispatchQueue.main.async {
                    view.Metadata = md
                    view.sizetoFit()
                    self.redraw.toggle()
                }
            }
            else if error != nil
            {
                let md = LPLinkMetadata()
                md.title = "Custom title"
                view.Metadata = md
                view.sizetoFit()
                self.redraw.toggle()
            }
        }
        
        return view
    }
    
    func updateUIView(_ view: LPLinkView,context: Context) {
        // New instance for each update
    }
}

struct StringLink : Identifiable{
    var id = UUID()
    var string : String
}

enter image description here

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...