SO上有several answers关于“imageNamed:”无效,但没有一个包含我特别的皱纹:
我在iOS 7上从“imageNamed:”获得nil
,但同样的版本适用于iOS 8。
显然,所有内容都可以正常连接,因为它可以在iOS 8上运行,但它会在iOS 7上为大范围(可能是24个)的图像返回nil
。值得注意的是,我将资产转移到了AssetCatalog在此时开始。 iOS 7上的资产目录是否有一些不寻常的行为需要考虑?
以下是一些细节,基于本网站上类似问题的答案:
到目前为止,SO上的大部分答案都是针对阻止它完全的错误。任何人都可以帮助进行仅适用于iOS 8的图像调用吗?
答案 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)
您可以尝试以下步骤:
清理项目(Cmd + Shift + K)并再次运行。
添加其他图像(不是@ 2x,@ 3x)并检查它是否有效。
创建一个新项目并检查UIImage imagedName可以与iOS7 / 8一起使用。
有些问题,我们不需要尝试找到根本原因,只需跳过它然后去:)