【问题标题】:Explicitly add @2x to non retina devices将@2x 显式添加到非视网膜设备
【发布时间】:2012-12-27 23:20:59
【问题描述】:

我们有一个谜!

在我们的应用中,我们仅使用视网膜图像(@2x 标记)。 直到昨天,即使我们调用最后没有 @2x 的图像,非视网膜设备也能很好地显示图像。

例如,如果文件名是“fun@2x.png”,我们调用[UIImage imageWithName:@"fun"]

今天它停止工作,现在我们必须调用[UIImage imageWithName:@"fun@2x"] 才能显示图像。 (设备为 iPhone 3GS iOS 5.1)。

我们现在担心我们不了解视网膜命名。

发生了什么变化? 正确的处理方法是什么?

谢谢

沙尼

【问题讨论】:

  • 您错过了文件名字符串的 @ 符号(例如 @"fun")。是不是笔误?
  • 是的,这是一个错字,谢谢

标签: ios retina-display


【解决方案1】:

您应该提供非视网膜图像!降级不是一个好的选择。这里的问题是 iOS 试图找到 fun.png 图像但没有找到。因此无法呈现某些东西。

我无法解释为什么它以前有效。你确定吗?

【讨论】:

  • 这是一个折衷方案,因为我们有一个 45 兆的二进制文件。如果我们将添加非视网膜,那么我们将超过 50MB 的 wifi 下载限制。不过谢谢你的回答。
  • 我将此标记为正确答案,因为这是苹果的官方答案。
【解决方案2】:

在我开发过的应用中,如果我只提供 1 张图片(2x 一张)而不是只使用完整的图片名称,即:

[UIImage imageWithName:@"my-image.png"]

当我为某些需要两个版本的按钮提供图像时,我使用:

[UIImage imageWithName:@"my-image"]

按照第二种方式,您必须提供具有该基本名称的视网膜和非视网膜图像

就像dasdom 所说的那样,在此之前它不应该以这种方式工作——即使它以某种方式出现,如果你希望你的图像始终显示,你也应该坚持我上面所说的。

【讨论】:

  • 好吧,它运行了将近一年。我对此没有任何解释。
  • @shannoga 在我来学习的Xcode中发生了许多奇怪的无法解释的事情:P
猜你喜欢
  • 2023-03-06
  • 2012-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多