SwiftUI在主捆绑包中找不到命名的图像

时间:2019-07-11 15:28:16

标签: swiftui

我正在研究SwiftUI,图像(名称:字符串)有问题。

这是我的ContentView

var body: some View {
    VStack {
        Image("test")
            .resizable()
            .aspectRatio(contentMode: .fit)
            .frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: 75, alignment: .center)
            .clipped()
        List(retriever.items) { item in
            Row(coin: item)
        }
    }
}

当我运行该项目时,我收到了此消息 “线程1:致命错误:在主捆绑包中找不到名为test的图像”

所以,我在下面尝试过。

  • 图片(“ test.jpg”)
  • Image(“图像/测试”)
  • Image(“ images / test.jpg”)

但是,结果是相同的。

该图像位于该路径中 '项目根目录/images/test.jpg'


奇怪的是,这段代码很好用。

Image(uiImage: UIImage(named: "test.jpg")!)

我该如何解决这个问题?

8 个答案:

答案 0 :(得分:0)

您应该将图像放置到Assets.xcassets文件夹中。错误消息从字面上告诉您-'我在Assets.xcassets上找不到此图像。

答案 1 :(得分:0)

将图像保存为PDF格式(“ test.pdf”)并将其拖到资产目录的编辑器中 =>图片(“测试”)就可以了...

答案 2 :(得分:0)

请检查图像集的Contents.json是否包含与图像名称相同的名称。请参见下图。

ImageSet of Conference Room

这对我有用。

答案 3 :(得分:0)

您必须将图像添加到Xcode项目结构中的Assets Catalog中,以便Apple可以在幕后进行一些魔术操作,以准备将它们与多种屏幕尺寸一起使用。双击xcode编辑器左侧项目窗格中的Assets.xcassets文件夹(如果没有,则创建一个资产文件夹),然后将图像文件拖放到目录窗格中。

此后,像Image("your_image_name")之类的呼叫应该可以正常工作。

答案 4 :(得分:0)

我可能是错的,但是我认为swift默认为.png文件。也许当您只写Image(“ test”)时,它正在寻找“ test.png”

尝试将图像另存为.png,将其放置在assests文件夹中,然后像以前一样使用Image(“ test”)。

答案 5 :(得分:0)

还要检查是否要复制Assets.xcassets到捆绑资源中。您可以通过转到目标->构建阶段->复制捆绑资源

找到它

Image showing the Build Phases menu, with expanded Copy Bundle Resources section

答案 6 :(得分:0)

通过Google来关注此话题。没有答案对我有用。我将那个PNG文件放到了项目中,并且成功了:

if let image_url = Bundle.main.url(forResource: "selfie", withExtension: "png") {
    Image(uiImage: UIImage(imageLiteralResourceName: image_url.lastPathComponent)!)
        .renderingMode(.original)
        .resizable().scaledToFit()
}

我不得不使用Image(uiImage: UIImage(imageLiteralResourceName:))的重载版本。仅指定该图像的文件名,使用图像文件的绝对路径将不起作用

答案 7 :(得分:0)

我能够根据 Monica 的回答解决我的问题。最终我的 Assets.xcassets 没有包含在 Bundle 资源中。