iPhone图标@2x.png在Retina显示屏上无法显示

22

由于某种原因,iPhone 4无法显示我的高分辨率图标文件。

我已经尝试了以下这些解决方案,但都没有起作用:

如何为iPhone 3设置普通图标和为iPhone 4设置Retina图标

http://developer.apple.com/library/ios/#qa/qa2010/qa1686.html

http://appworks.radeeccles.com/programming/cfbundleiconfiles-nice-ready-prime-time/

这些图标都在我的资源组中,并且命名正确:

  • Icon.png
  • Icon@2x.png
  • Icon-72.png

我还尝试将它们添加到Info.plist文件中,首先作为数组,然后作为字典,然后只是从plist文件中删除所有图标引用,但无论我做什么,它仍然显示57x57的图标被放大。

能否有一个拥有工作的图标设置的人,请发布实际的XML咒语以使此工作?


应该是这样的...你的SDK版本是多少?你有没有忘记写I(而写成了icon@2x.png)?你尝试过清理/编译吗? - Vinzius
尝试了所有的方法,没有任何进展。此问题发生在SDK 4.1和最新版本的xcode中。 - Karl
10个回答

55

我的解决方案很简单,但只有通过在苹果文档中逐行比较才发现问题。

那个看似矛盾的不明显的解决方案是“删除Icon文件的键值”。在之前回答的图片中,您可以看到图标文件仍显示为“icon.png”,而“图标文件”显示了两个:icon.png和icon@2x.png。

我通过删除“Icon文件”的键值“Icon.png”使我的应用程序正常工作。唯一与苹果文档中不同的是,“Icon文件”键没有值。在此处查看图像:被移除的链接...

更新后的链接显示这些图像: https://developer.apple.com/library/content/qa/qa1686/_index.html#//apple_ref/doc/uid/DTS40009882

此外,我建议您在标记照片时使用苹果推荐的符号:

  • 512x512 iTunesArtwork iTunes 图像
  • 57x57 Icon.png 主屏幕 < iPhone 4
  • 114x114 Icon@2x.png 主屏幕iPhone 4 高分辨率
  • 72x72 Icon-72.png iPad 兼容性主屏幕
  • 29x29 Icon-Small.png Spotlight和设置
  • 50x50 Icon-Small-50.png iPad 兼容性Spotlight
  • 58x58 Icon-Small@2x.png iPhone 4高分辨率的Spotlight和设置

下一步操作...

  1. 清除所有目标
  2. 重置模拟器
  3. 重新启动应用程序
  4. 对于iPhone4,正常工作,显示大的AppIcon =“Icon@2x.png”

最后步骤...

  1. 我将“Icon.png”名称放回到(图标文件)键中。
  2. 我重新添加了此项以向后支持iOS 3.0+,因此它仍然有一个可用的值。
  3. 再次清理所有目标,
  4. 构建并重新启动!

这种方法似乎可以清除任何旧问题,并确保模拟器拉取正确的文件。

希望这能帮助到你!

P.S. 如果这可以帮助您解决问题,请务必将我的评论标记为解决方案。


对我也奏效了!我的问题是我重命名了项目后,图标在模拟器和设备上都无法显示。您的解决方案解决了这个问题 :) - samxli
有人能评论一下这些图片的分辨率吗?这些图片应该以标准的72dpi还是更高的96dpi渲染?我问这个问题是因为WP7标准要求使用更高的分辨率,而且维护两组图标太麻烦了。谢谢! - Jason
这是一个非常好的PSD模板,用于实际图标创建。http://blog.cocoia.com/2010/iphone-4-icon-psd-file/ - JeremyWeir
太好了,我总是忘记如何完成这个小动作。非常感谢。 - Jonathan Watmough
“Info.plist Apple Docs Image”的链接已失效。” - Emile Cormier
@EmileCormier:是的,那是在2010年。请尝试此链接,它将带您到最新的源代码:http://developer.apple.com/library/ios/#qa/qa1686/_index.html#//apple_ref/doc/uid/DTS40009882 - Newbyman

17

我也遇到过这个问题...以下是我如何解决的

在你的info.plist文件中,你需要两个条目:

第一个是“图标文件”,它需要设置为“Icon.png”。

第二个条目是“图标文件集”,这是一个数组...

数组中的第一个条目是标准清晰度下的icon文件:“Icon.png”

第二个条目是高清晰度下的icon文件:“Icon@2x.png”

alt text


是的,这基本上就是苹果文档中所写的。我已经区分大小写并确保文件名完全一致。但在iPhone 4上仍显示低分辨率图标。 - Karl
你确定高分辨率图像没有损坏吗?我知道很多时候我会不小心将 PSD 文件保存为 PNG 格式,只改了扩展名而已。 - Thomas Clayson
抱歉...你做得没错...一定还有其他问题。你是在 iPhone 4 上安装吗?你尝试过删除应用并重新安装吗?你确定 @2x 的图标与标准清晰度的图标不一样吗?你确定它的尺寸是 114x114 而不是意外保存为 57x57 吗?嗯...我想不出还可能是什么问题了。 - Thomas Clayson
是的,我已经检查了所有的内容。我只是希望有人能够发布实际的XML文件,这样我就可以将我的文件与一个真正有效的文件进行比较。 - Karl
你已经拥有了我的屏幕截图...实际的XML没有太多了。 - Thomas Clayson
问题在于可视化编辑器经常会误导,这就是为什么我正在寻找实际的XML。 - Karl

4

我曾经遇到类似的问题,并尝试在info.plist中使用"Icon files"数组条目,但没有成功。

为了解决这个问题,我删除了info.plist中所有的"Icon file"和"Icon files"条目,以及项目设置中的属性选项卡中的相应内容。然后,我按照苹果的命名规范对所有文件进行命名即可。

    * 512x512 iTunesArtwork iTunes Image
    * 57x57 Icon.png Home screen for < iPhone 4
    * 114x114 Icon@2x.png Home screen for iPhone 4 High Resolution
    * 72x72 Icon-72.png Home screen for iPad compatibility
    * 29x29 Icon-Small.png Spotlight and Settings
    * 50x50 Icon-Small-50.png Spotlight for iPad compatibility
    * 58x58 Icon-Small@2x.png Spotlight and Settings for iPhone 4 High Resolution

如Newbyman所发布。

接着我进行了清理并构建。iPhone将在资源包中正确检测命名图标并使用适当的图标。我在iPhone4和运行3.1.3的第一代iPhone上进行了测试。我正在使用iOS 4.2和最新的Xcode。希望这能帮助某人。


2

您只需要在info.plist中添加 "Icon files"(不是 "Icon file"),并将此值类型更改为 Array(右键单击 "Icon Files")。之后再次添加两行(再次右键单击)并在第一行中键入 "icon.png",在第二行中键入 "icon@2x.png"。


是的,我们之前在其他解决方案中已经讨论过这个问题,但并没有奏效。 - Karl

2

看起来iOS4在这个主题上没有使用@2x语法。

在您的plist文件中的“图标文件”

添加以下文件
* icon57.png * icon114.png

此方法适用于我的项目。


1

我尝试了Newbyman的解决方案,但它没有起作用。问题似乎出现在当您尝试将新图标添加到旧项目并尝试维护3.0遗留内容时... 不知何故,您可以完全正确地将“图标文件”数组添加到info.plist中,但在视网膜显示器上仍将保留原始低分辨率图标...

我的解决方案最终是完全删除info.plist,并从一个正在工作的更新项目中获取一个新的info.plist,然后更改图标名称和产品相关信息的值,使其与旧的info.plist基本完全匹配,但一些遗留信息必须消失... 当您重新添加较新的info.plist时,请确保选中“作为目标添加”....


另外,请确保仅将其添加到相关目标中。默认情况下,所有目标都已选中,因此需要小心处理。 - DenTheMan
这就是为什么它应该从相关目标的“复制包资源”中删除的原因:http://lists.apple.com/archives/xcode-users/2008/Aug/msg00414.html - DenTheMan

0

我自己也遇到了很多麻烦。我得出的结论是数组中图标的顺序是问题所在。最初,我的顺序是:

Icon.png
Icon-72.png
Icon@2x.png

这样做是行不通的。但是,当我将它改为这样时,一切都正常了:

Icon.png
Icon@2x.png
Icon-72.png

0

经过很多挫折后,我唯一能让它工作的方法是创建一个新的目标,并从 plist 文件中删除所有图标引用。


0

好的,我又遇到了这个问题。

实际上发生的情况是Icon@2x.png被保存为jpg文件。因此,xcode会愉快地包含“png”图像,但iOS却无法识别。

XCode 4实际上会检查并抱怨这一点,这很好。


0

有时候需要移除图标,进行清理构建,再添加图标,然后在设备上运行。这对我很有帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接