我注意到了一件奇怪的事情:在新的小部件中,经常没有显示远程图像,即使图像已经成功加载并放置在缓存中,也不会显示。
对于图像下载,我尝试过:
所有这些都表明图像加载成功,但是实际的小部件没有显示它。
struct TestWidgetEntryView : View {
var entry: Provider.Entry
var body: some View {
WebImage(url: URL(string: "https://miro.medium.com/max/3840/0*TLqp5Uwavd-U_xrs.jpg"))
.onSuccess()
.resizable()
}
}在调试器的第二次运行(从缓存加载图像)中,我会显示图像,但不会(?)刚开始的时候。
就像在onSuccess中,我需要触发UI失效吗?但是怎么做呢?
(因为它恰好发生在字面上的每一张图片-我试过--我不认为它有什么不妥的地方)
Environment:
simulators)
)。
发布于 2020-08-13 03:33:13
是的,正如Konstantin所提到的,不支持加载映像asynchronously.有两个选项可以在小部件中加载网络映像。
TimelineProvider中的
或
Data(contentsOf: url)获取图像。这样,它仍然同步地获取它们,但是代码更简洁。样本代码-结构NetworkImage:视图{私有的让url: URL?变量体:一些视图{组{如果让url = url,让imageData =尝试?Data(contentsOf: url),设uiImage = UIImage(data: imageData) { Image(uiImage: uiImage) .resizable() .aspectRatio(contentMode:.fill) }imageData}{image(“占位符-图像”) } }}
这个视图可以像这样使用-
NetworkImage(url: url)发布于 2020-07-25 08:29:29
明白了:它根本不受支持,您的目标是在TimelineProvider中加载图像:
https://stackoverflow.com/questions/63086029
复制相似问题