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

Ner*_*ken 5 uiimage imagenamed ios ios7 ios8

SO上已经有几个答案关于"imageNamed:"不起作用,但没有一个包含我特别的皱纹:

我是nil从iOS 7上的"imageNamed:" 获得的,但同样的版本适用于iOS 8.

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

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

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

到目前为止,大多数的SO的答案是,将阻止其工作的错误可言.任何人都可以帮助进行仅适用于iOS 8的图像调用吗?

Ner*_*ken 2

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

"RedBall.png - Small" (includes 25px, 50px, 75px)
"RedBall.png - Large" (includes 150px, 300px, 450px)
"BlueBall.png - Small"
"BlueBall.png - Large"
Run Code Online (Sandbox Code Playgroud)

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

将文件重命名为...

"RedBall - Small"
"RedBall - Large"
"BlueBall - Small"
"BlueBall - Large"
Run Code Online (Sandbox Code Playgroud)

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