Swiftui 将url中的图像()放在列表中按钮内部的HStack中会使其变黑

Swiftui 将url中的图像()放在列表中按钮内部的HStack中会使其变黑,swiftui,Swiftui,我一直在尝试制作一个按钮列表,当它被点击时,它会调用一些代码,我还需要一些“缩略图”来配合每个按钮,所以我为每个按钮制作了一个HStack,并将其全部放在一个列表中,现在缩略图不会渲染,顺便说一句,它可以很好地渲染系统图像和本地资产,只是从网络上抓到的图像 您只需将其复制粘贴到ContentView.swift即可复制 导入快捷界面 func artwork()->图像 { 让艺术=”https://via.placeholder.com/150" 如果让url=url(string:art),

我一直在尝试制作一个按钮列表,当它被点击时,它会调用一些代码,我还需要一些“缩略图”来配合每个按钮,所以我为每个按钮制作了一个HStack,并将其全部放在一个列表中,现在缩略图不会渲染,顺便说一句,它可以很好地渲染系统图像和本地资产,只是从网络上抓到的图像

您只需将其复制粘贴到ContentView.swift即可复制

导入快捷界面
func artwork()->图像
{
让艺术=”https://via.placeholder.com/150"
如果让url=url(string:art),让data=try?data(contentsOf:url),让image=UIImage(data:data)
{
返回图像(uiImage:Image)
}
其他的
{
返回图像(系统名称:“书本”)
}
}
结构ContentView:View
{
var body:一些观点
{
列表
{
按钮(操作:{…我的代码…})
{
HStack
{
艺术品()
}
…一些其他信息
}
}
}
}
此问题类似于

只需将
.renderingMode(.original)
添加到
图像中即可,如下所示:

func artwork() -> Image
{
    let art = "https://via.placeholder.com/150"
    if let url = URL(string: art), let data = try? Data(contentsOf: url), let image = UIImage(data: data)
    {
        return Image(uiImage: image)
    }
    else
    {
        return Image(systemName: "book")
    }
}

struct ContentView: View
{
    var body: some View
    {
        List
        {
            Button(action: {})
            {
                HStack
                {
                    artwork().renderingMode(.original)
                }
            }
        }
    }
}

我要做的第一件事是将artwork函数放在一个单独的类(模型)中,并使用ObjectBinding。也没有可能导致性能不佳的缓存功能。