Kon*_*nov 22 widgetkit swiftui ios14
我观察到一件奇怪的事情:在新的小部件中,即使图像已成功加载并放入缓存中,远程图像也经常无法显示。
对于图像下载,我尝试过:
所有这些都表明图像加载成功,但实际的小部件没有显示它。
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()
}
}
Run Code Online (Sandbox Code Playgroud)
在调试器的第二次运行 - 从缓存加载图像 - 我显示图像,但在初始运行时从未(?)。
感觉就像在 onSuccess 我需要触发 UI 失效?但是如何?
(因为它确实发生在我尝试的每个图像库中 - 我不认为它是库中的东西)
环境:
pra*_*rad 37
是的,正如康斯坦丁所说,不支持异步加载图像。有 2 个选项可以在小部件中加载网络图像
获取TimelineProvider 中的所有图像并将它们直接注入视图。
或者
使用Data(contentsOf: url)来获取图像。这样它仍然同步获取它们,但代码更清晰。示例代码 -
struct NetworkImage: View {
private let url: URL?
var body: some View {
Group {
if let url = url, let imageData = try? Data(contentsOf: url),
let uiImage = UIImage(data: imageData) {
Image(uiImage: uiImage)
.resizable()
.aspectRatio(contentMode: .fill)
}
else {
Image("placeholder-image")
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
这个视图可以简单地像这样使用 -
NetworkImage(url: url)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4887 次 |
| 最近记录: |