我正在研究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的图像”
所以,我在下面尝试过。
但是,结果是相同的。
该图像位于该路径中 '项目根目录/images/test.jpg'
奇怪的是,这段代码很好用。
Image(uiImage: UIImage(named: "test.jpg")!)
我该如何解决这个问题?
答案 0 :(得分:0)
您应该将图像放置到Assets.xcassets文件夹中。错误消息从字面上告诉您-'我在Assets.xcassets上找不到此图像。
答案 1 :(得分:0)
将图像保存为PDF格式(“ test.pdf”)并将其拖到资产目录的编辑器中 =>图片(“测试”)就可以了...
答案 2 :(得分:0)
答案 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)
答案 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 资源中。