UIImage“imageNamed:”适用于iOS 8,但不适用于7?

时间:2015-05-08 17:11:08

标签: ios ios7 ios8 uiimage imagenamed

SO上有several answers关于“imageNamed:”无效,但没有一个包含我特别的皱纹:

我在iOS 7上从“imageNamed:”获得nil,但同样的版本适用于iOS 8。

显然,所有内容都可以正常连接,因为它可以在iOS 8上运行,但它会在iOS 7上为大范围(可能是24个)的图像返回nil。值得注意的是,我将资产转移到了AssetCatalog在此时开始。 iOS 7上的资产目录是否有一些不寻常的行为需要考虑?

以下是一些细节,基于本网站上类似问题的答案:

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

到目前为止,SO上的大部分答案都是针对阻止它完全的错误。任何人都可以帮助进行仅适用于iOS 8的图像调用吗?

2 个答案:

答案 0 :(得分: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”是名称,而iOS 7不知道当“.png”就在中间时该怎么办。

将文件重命名为...

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

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

答案 1 :(得分:0)

您可以尝试以下步骤:

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

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

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

  4. 有些问题,我们不需要尝试找到根本原因,只需跳过它然后去:)