URLImage 从不在 SwiftUI 的小部件应用程序中加载图像 [重复]

Posted

技术标签:

【中文标题】URLImage 从不在 SwiftUI 的小部件应用程序中加载图像 [重复]【英文标题】:URLImage Never Loads Image in Widget App for SwiftUI [duplicate] 【发布时间】:2020-10-01 16:05:01 【问题描述】:

ios Widget 的简单代码,我已验证 meme 已加载来自早期 HTTP 请求的 meme.url 值。我还检查了自己打印 url 文本,这也有效,但我无法使用 URLImage 包加载图像。我也尝试过小部件和内容视图,但没有结果。有什么想法吗?

meme.url 是一个可选的 URL 类型。

网址图片:https://github.com/dmytro-anokhin/url-image

注意:更具体地说,占位符确实出现了,但不是来自 url 的图像。 这是一个示例网址:https://i.redd.it/zey35zvw4gq51.jpg

import SwiftUI
import URLImage

struct MemeView: View 
    let meme: MemeModel

    var body: some View 
        URLImage(meme.url!, placeholder: Image(systemName: "square"))
    

【问题讨论】:

【参考方案1】:

想通了。不需要 URLImage。问题是小部件无法处理异步调用,因此您必须像这样包装它:

struct MemeView: View 
var meme: MemeModel

var body: some View 
    Group 
        if let url = meme.url!, let imageData = try? Data(contentsOf: url),
       let uiImage = UIImage(data: imageData) 

       Image(uiImage: uiImage)
         .resizable()
         .aspectRatio(contentMode: .fill)
      
      else 
       Image("placeholder-image")
      
    

【讨论】:

不,你没有想通。您只是从重复的问题中复制粘贴了this answer。 @pawello2222 将其保存为语义圆顶,E.B.白色的!我也复制粘贴了;)抱歉没有具体说明,我发现 URLImage 使用了 widgetkit,因此是同步的,所以我查找了 widgetkit 的问题并找到了答案并对其进行了一些调整。没想到你需要所有这些信息。如果你也想辩论一个忒修斯悖论,尽管我在里面。

以上是关于URLImage 从不在 SwiftUI 的小部件应用程序中加载图像 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

在使用 swiftui 的小部件中如何获取当前位置? [复制]

从不同类添加的小部件内的 PyQt5 停止计时器

SwiftUI 中的小部件 UI 预览

isPlaceholder 修饰符不可用且在小部件工具包 + SwiftUI 中不起作用

在 SwiftUI 小部件扩展中访问项目代码库

在 SwiftUI 小部件中添加观察者的位置