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 显示图像