使用 UIImage(contentOfFile:) 获取图像的资产目录路径



当您将图像从桌面拖到 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.pngmyFile@2x.pngmyFile@3x.png,那么当您使用与名称 "myFile.png" 一起显示的代码时,会发生正确的事情。

如果

图像存在于xcassets中,则无法通过contentsOfFile访问图像,则需要将其添加到项目文件中,并启用复制选项

最新更新