【问题标题】:imageNamed returns nil on iOS 7 but not iOS 8imageNamed 在 iOS 7 上返回 nil,但在 iOS 8 上不返回
【发布时间】:2015-10-06 09:06:33
【问题描述】:

我有不同时间间隔的图像。一个例子是“1.5d-4h.png”,也就是 4 小时到 1.5 天之间。对于每个间隔图像,我都有常规的 @2x 和 @3x 资产,并且我确保它们都是 PNG(不是 JPG),但由于某种原因,某些间隔图像无法通过 imageNamed 仅在 iOS 7 上加载。iOS 8设备正确加载所有可能的间隔图像。

从进一步的测试来看,如果您将名称完全限定为imageNamed,它看起来就像在 iOS 7 上一样,所有这些图像都会成功,例如

(lldb) po [UIImage imageNamed:@"1.5d-4h.png"]
<UIImage: 0x7ec390>

(lldb) po [UIImage imageNamed:@"1.5d-4h"]
 nil

在 iOS 7 和 8 上均成功加载的图像示例:

(lldb) po [UIImage imageNamed:@"10-9d"]
<UIImage: 0x10cc290>

这是完整的时间间隔集:

@"4h-0min"
@"1.5d-4h"   // fails
@"4.5-1.5d"  // fails
@"5.5-4.5d"  // fails
@"7-5.5d"    // fails
@"9-7d"
@"10-9d"

有什么建议吗?

【问题讨论】:

  • “从一些进一步的测试来看,如果你将名称完全限定为 imageNamed,它看起来像在 iOS 7 上成功”所以完全限定名称。

标签: ios objective-c iphone ios7 ios8


【解决方案1】:

似乎所有图像名称都带有“。”其中无法加载。

尝试转义 '.'字符或将图像重命名为没有“。”他们名字中的字符。

【讨论】:

  • imageNamed 可能使用点来尝试解析文件扩展名。
  • @thelaws 这似乎是正在发生的事情。他们必须改进他们在 iOS 8 上的解析才能解决“。”。人物。我刚刚将我的时间间隔图像重命名为不再使用“。”字符,例如“1d12h-4h.png”,它似乎工作:)
【解决方案2】:

给出一个简单的图像名称意味着没有点 (.) 以及检查图像名称中的驼峰式大小写,因为模拟器不关心驼峰式,而是关心设备。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-12
    • 2013-10-14
    • 1970-01-01
    • 1970-01-01
    • 2020-04-22
    • 2023-03-24
    • 2015-01-14
    相关资源
    最近更新 更多