UIImage imageNamed 在应用程序 A 中给出 nil,但在应用程序 B、C、D 中不给出

Posted

技术标签:

【中文标题】UIImage imageNamed 在应用程序 A 中给出 nil,但在应用程序 B、C、D 中不给出【英文标题】:UIImage imageNamed gives nil in app A, but not apps B, C, D 【发布时间】:2017-08-20 22:45:02 【问题描述】:

我有四个应用程序。在他们每个人中,我都有一个“X”图标,用于关闭视图控制器。在四分之三的应用程序中,我可以做到这一点:

 UIImage *xImage = [UIImage imageNamed: @"X.png"];

但在其中 1 个应用程序中,xImage 为零。没有错误或警告。我什至尝试使用 xcodebuild 进行编译;没有错误或警告。

我实际上有这个图像的 4 个版本:

24 -rw-r--r--  1 user  staff   8.8K Jul 25 22:20 X.png
24 -rw-r--r--  1 user  staff    12K Jul 25 22:20 X@2x.png
32 -rw-r--r--  1 user  staff    14K Jul 25 22:20 X@3x.png
40 -rw-r--r--  1 user  staff    19K Jul 25 22:20 X@4x.png

请注意,它们都没有设置隔离标志。

我已经对这些文件运行了 shasum。每个应用都有完全相同的文件。

为什么我可以在 4 个应用程序中的 3 个中获取 X.png 而不是 1 个?

感谢任何线索。

另外,如果我厌倦了这种废话,我可以只使用 X@4x.png 并且 ios 会使用它来生成其他的吗?

【问题讨论】:

检查图像 X.png 是否在 app1 的项目资源中 您需要提供有关如何管理资源的更多信息。你用xcasset吗?或者你只是拖放到项目经理?是的,最新的功能是您不必使用多个 res 图像 - 而是使用单个矢量图形。谷歌一下。 [UIImage imageNamed:] 如果使用资产目录,则不需要文件扩展名。如果图像在您的项目中并且不使用资产目录,那么您需要扩展名以及分辨率。 我将 X.png 文件放在了我添加到我的项目中的 Assets 文件夹中。我从未使用过 xcasset。 我尝试删除然后添加它,但没有帮助。 【参考方案1】:

获取不到图片有两种可能:

1) 当您将图像拖到项目文件夹中时,您可能会忘记选中标记Copy If needed选项。

2) 选择您的图像并检查其属性是否选中了 Target Membership 复选框。

3) 检查是否有多个同名图片。

【讨论】:

【参考方案2】:

1.尝试删除X.png并构建您的应用 2.将X.png重命名为X@1x.png 祝你好运!

【讨论】:

以上是关于UIImage imageNamed 在应用程序 A 中给出 nil,但在应用程序 B、C、D 中不给出的主要内容,如果未能解决你的问题,请参考以下文章

UIImage imageNamed 上的实时应用程序崩溃:

UIImage imageNamed 不使用 xcode 4.4 显示图像

UIImage imageNamed 在应用程序 A 中给出 nil,但在应用程序 B、C、D 中不给出

UIImage imageNamed 返回 nil

UIImage imageName

无法使用 imageNamed 方法获取 UIImage 对象