当您将图像从桌面拖到 Xcode 的资源目录中时,您可以使用以下命令在项目中访问该图像:
UIImage(named: "somePNG")
但是如何使用UIImage(contentsOfFile:)
访问该图像?
if let path = Bundle.main.path(forResource: "somePNG", ofType: "png") {
someImageView.image = UIImage(contentsOfFile: path)
}
上面的代码不起作用。文件检查器中的图像将添加到目标位置。我错过了什么?
为什么要使用 UIImage(contentsOfFile:)
而不是 UIImage(named:)
?原因可能是您希望可以从资产目录加载图像而不自动缓存它。你不能。(我认为这是资产目录工作方式中的一个主要错误。您必须将图像存储在应用程序捆绑包的根级别,就像我们在资产目录存在之前所做的那样。
如果您根据命名约定命名与分辨率相关的文件,例如 myFile.png、myFile@2x.png、myFile@3x.png,那么当您使用与名称 "myFile.png"
一起显示的代码时,会发生正确的事情。
图像存在于xcassets
中,则无法通过contentsOfFile
访问图像,则需要将其添加到项目文件中,并启用复制选项