如何解决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
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。