【发布时间】:2019-09-22 09:14:48
【问题描述】:
我正在使用从一篇很棒的文章 here 中找到的代码,该文章演示了如何在 SwiftUI 中使用 LinkPresentation 框架。
但是我遇到了一个我无法找到解决方案的小问题 - 链接预览会加载其元数据,但一旦完全加载就不会刷新视图,除非我执行了强制刷新视图的操作,例如旋转电话。
它们的加载量与此一样多:
然后旋转后是这样的:
我希望在加载元数据后完全刷新视图。我觉得我可能需要在某个地方添加一些绑定,但我不知道在哪里。任何人都可以提供帮助吗?
这是 UIViewRepresentable
import SwiftUI
import LinkPresentation
struct URLPreview : UIViewRepresentable {
var previewURL:URL
func makeUIView(context: Context) -> LPLinkView {
LPLinkView(url: previewURL)
}
func updateUIView(_ view: LPLinkView, context: Context) {
// New instance for each update
let provider = LPMetadataProvider()
provider.startFetchingMetadata(for: previewURL) { (metadata, error) in
if let md = metadata {
DispatchQueue.main.async {
view.metadata = md
view.sizeToFit()
}
}
}
}
}
这就是它的名称:
struct Content: View {
var body: some View {
URLPreview(previewURL: URL(string: "www.apple.com")!)
}
}
【问题讨论】:
-
如何在不循环数组的情况下加载表格列表?我需要实现您在屏幕截图中提到的相同内容,即从数组到表列表的多个 URL,但它只是分散
-
@NSPratik TableViews 不适合与
LPLinkViews 一起使用。考虑使用VStack。我在下面发布了详细的答案。