繁体   English   中英

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

[英]UIImage “imageNamed:” works on iOS 8, but not 7?

SO上已经有几个答案关于“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的答案是,将阻止其在所有工作的bug。 任何人都可以帮助进行仅适用于iOS 8的图像调用吗?

呵呵。 显然,解决方案是如果资产目录中的图像集在其名称中有一个文件后缀,则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. 清理项目(Cmd + Shift + K)并再次运行。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM