5

已经有几个关于“imageNamed:”不起作用的答案,但没有一个包括我特别的皱纹:

nil从 iOS 7 上的“imageNamed:”获取,但相同的构建适用于 iOS 8。

显然,一切都已正确连接,因为它确实在 iOS 8 上工作,但它始终如一地返回niliOS 7 上的各种(可能是 2 打)图像。值得注意的是,我在开始时将资产移动到 AssetCatalog。iOS 7 上的资产目录是否有一些不寻常的行为需要考虑?

以下是一些详细信息,基于对本网站上类似问题的回答:

  • 此问题出现在为用户存档和导出的实际构建中,以及模拟器中。两个版本都显示了 iOS 7/8 的拆分行为。
  • 图像是 PNG,资产目录包含每个的 1x、2x 和 3x 版本。
  • 我已经确认了拼写和大小写匹配(通过它在 iOS 8 上的工作进一步确认)。

到目前为止,关于 SO 的大多数答案都是针对会阻止它工作的错误。任何人都可以帮助处理仅适用于 iOS 8 的图像调用吗?

4

2 回答 2

2

嗯。显然,解决方案是,如果资产目录中的图像集名称中有文件后缀,iOS 7 就会出错。我们的资产目录中有每个文件的多个版本,相同的图像但用于不同的用途,所以我的同事用旧文件名命名它们,如下所示:

"RedBall.png - Small" (includes 25px, 50px, 75px)
"RedBall.png - Large" (includes 150px, 300px, 450px)
"BlueBall.png - Small"
"BlueBall.png - Large"

显然,iOS 8 足够聪明,可以识别“RedBall.png - Small”是名称,而当“.png”在中间时,iOS 7 不知道该怎么做。

将文件重命名为...

"RedBall - Small"
"RedBall - Large"
"BlueBall - Small"
"BlueBall - Large"

...似乎可以解决问题。

于 2015-05-08T17:44:02.480 回答
0

您可以尝试以下步骤:

  1. 清理您的项目 (Cmd+Shift+K) 并再次运行。

  2. 添加其他图像(不是@2x,@3x)并检查它是否有效。

  3. 创建一个新项目并检查 UIImage imagedName 是否可以与 iOS7/8 一起使用。

对于一些问题,我们不需要尝试找到根本原因,只需跳过它并继续 :)

于 2015-05-08T17:37:42.887 回答