如何更新应用程序图标和启动图片以同时支持IOS 6和7?

38

我一直苦恼于如何从Xcode5发布应用程序,使其支持IOS7和IOS6+的同一构建版本,并且可以正确加载适用于两者的资源(图标和启动画面),同时仍然可以正确呈现IOS6的资源。我主要遇到的问题是如何让IOS 6仍然呈现图标而不带阴影或高亮效果,因为在Xcode 5的GUI中,“预渲染”选项甚至不再可用。任何想法如何使所有内容和图标都正确呈现并支持多个操作系统版本?

安德鲁


3
这个问题在苹果开发者论坛上已经被广泛讨论过了,你可以去看看。 - Wain
1
在app.plist中添加一个名为UIPrerenderedIcon的字段,其值为TRUE。 - dthien
正如@dthien在上面所说的,您需要添加他提到的plist字段和二进制值。不过,由于某种原因,我不得不将该字段处理两次,才能使IOS 6停止应用渲染效果。 - AndyBean
6个回答

40
苹果公司对IOS 7应用的要求有明确的指南,但即使如此,我也遇到了问题,使单个应用程序支持多个操作系统版本。在解决问题后,我想指出一些对我来说是障碍的领域,以帮助未来的其他人。
我首先更新了整个应用程序,以干净地支持IOS 7,然后回头启用之前的版本,但这个过程并不必要。
只需确保首先设置正确的部署目标deployment target 一旦您设置了部署目标,Xcode5会很好地更改所需的默认资产列表,以支持多个操作系统版本。确保重新上传所需分辨率和所需文件名的正确版本的图标(如下所示,支持IOS6-IOS7) Icons, their sizes, and their default filenames in Xcode5 for IOS6 -7 support 请对启动图像执行相同的操作,注意您将需要将启动图像重命名为新名称,如果您允许Xcode尝试这样做,则会自动完成。请注意下面的新尺寸,因为IOS7会在状态栏后面扩展启动图像背景。
最后,手动添加以下两个.plist标志,您就可以设置使您的图标在各个IOS版本上保持一致,并且没有光泽(解释如下)。
IOS7在其新的扁平化设计中删除了以前版本所做的后处理,其中添加了高光和光泽效果到图标上。这种效果不再适用于IOS 7应用程序,但是如果您从Xcode5加载IOS 6上的应用程序,则会重新应用默认的光泽效果。这令人恼火,因为Xcode中不再有“预渲染”GUI标志以禁用该后处理。如上所述,您需要手动将标志添加到应用程序的plist中。在我的情况下,我必须在两个位置上添加标志以强制IOS 6停止应用该效果。您可以通过直接打开文件或导航到项目概述中的设置来访问plist。您可能需要从模拟器中卸载应用程序,然后重新构建应用程序,以使模拟器失去旧图标的缓存。

你的回答中第一张图片是为iOS 6,第二张图片是为iOS 7。对吗?我应该使用与你使用的相同的应用程序图标名称吗? - AJ112
1
如果你在谈论我的回答,是的,在Xcode 5中支持IOS 6,你需要将其选择为部署目标。在第二张图片中,如果你想让同一个应用程序支持IOS 7(此时你应该这样做),你需要提供那些图标以及它们的大小和字符名称。 - AndyBean
有人知道为什么在iOS6和iOS7上,iPhone启动图要求没有区别吗?我注意到iPad纵向启动图有所不同,确保您将状态栏区域考虑在内。那为什么iPhone没有呢?iPad横向也一样。为什么iOS6和iOS7上的这些维度是相同的呢? - Fergal Rooney
iPad横向尺寸我弄错了,它们是不同的。所以看起来iPhone是一样的。 - Fergal Rooney
这非常有用。非常感谢你的帮助。想象一下,当苹果发布5.5英寸和4.7英寸手机时,我们将面临的混乱情况。哇! - KamyFC

29
如果您设置了资源目录,您可以打开它,选择图像,然后进入检查器并选中此框。

xcode 5的屏幕截图


3
这个回答需要更多的赞!它一箭双雕:指定预渲染属性并在发布新设备尺寸时包含它们。 - ianthetechie
@ianthetechie 我同意,这是最好的答案。 - Supertecnoboff

25

只需使用“资产目录”(您可以从目标的常规选项中选择)。

这将在您的项目中创建一个 images.xcassets 的文件夹,您只需轻松地拖动预先设计好的图标用于 iOS 7 以前和 iOS 7。

更新: iOS 7 正式发布后,我现在可以这样写:

资产目录 中选择您要设置为预渲染的 Appicon 集,然后转到 属性检查器 并勾选“iOS 图标已预渲染”。你还可以在那里设置您想要支持的操作系统和设备(它会创建所有选项,所以您可以轻松拖放来设置)。

需要注意的重要事项是,如果您在此目录中使用了多个目标和多个集合,您必须手动添加 目标成员身份。要执行此操作,只需标记 "资产目录" 文件,转到文件检查器并标记您想要使用它的所有目标即可。我认为当您从目标设置中选择 "资产目录" 时,苹果应该自动执行此操作,但在此之前,我决定在这里提及一下(我花了一个小时才弄清楚了这一点)。


1
似乎你必须通过属性检查器来完成这个操作——直接编辑Info.plist文件并不足够。当我按照@Idan的指示进行操作时,它最终在iOS6上成功了。 - Rayfleck
@Rayfleck 我认为通过 Info.plist,您可以将所有图标设置为相同,这意味着支持 iOs 6 和 7,但两者都使用相同的图标。而使用资源目录,您可以为每个版本设置不同的图标。 - Idan

13

我最近也遇到了这个问题。默认情况下只显示以下内容。

在此输入图片描述

简单的解决方法是添加一个新的AppIcon。

在此输入图片描述

这样就可以给你所有这些选项。

在此输入图片描述


我喜欢这个解决方案的简便性,可惜它通过创建AppIcon的副本来使事情变得混乱。 - AndyBean
你可以随意更改名称,并删除另一个。 - DogCoffee
@Smick,你不应该这样做。看看我的答案,你可以在原始的Appicon资源上标记缺失的部分。 - Idan
1
你不需要这样做。只需单击Xcode栏以打开正确的“实用程序”面板并在那里编辑目标图标即可(请参见下面Kodejacks的答案和屏幕截图)。 - Danoli3

3

我的经验:

创建一个新的空应用程序时,它会创建一个不完整的“默认”应用程序图标/启动图像资源目录,正如@Smick所述。

这个新“目录”的烦人之处在于它不显示图像大小。

要解决此问题,请在项目导航器上选择项目,在“常规”中,您将注意到2个区域 - 应用程序图标和启动图像。它们将指向一个资源目录。您可以将其更改为“不使用资源目录”。之后,界面将变为文件/尺寸列表。

但是,此界面存在几个问题:

  1. 它只应询问图像的视网膜版本(并计算普通版本或具有两个链接,一个用于普通版本,另一个用于视网膜版本)。
  2. 一些图像(启动图像)需要重命名才能正常工作(系统会为您执行此操作)。
  3. 由于错误,两个图像无法分配(iPad Portrait iOS 7和iPad Landscape iOS 7,均为普通分辨率)-您可以为它们指定一个图像,但插入下一个图像时,该图像将不会保留并且将被取消选择。
  4. 指定的图像尺寸与HIG手册中指定的尺寸略有不同。
  5. 我非常不喜欢使用点表示图像的“新”符号(因为它们是设备相关的,所以不准确)。
  6. 如果您不想看到iOS 6在图标上重新应用“高亮/照明”,则需要在应用程序plist(项目管理器|项目|信息)中添加一个键。在那里,您可以添加一个键“图标已经包含光泽效果”。如果需要,您可能还需要在iOS 5图标上添加它。

1

针对 Xcode 6:

对于启动图片(LaunchImage),您必须确保勾选 iOS 6.0 及以前版本的 iPhone(竖屏)或 iPad,具体取决于您的项目配置。

尺寸

Default.png (320x480) 
Default@2x.png (640x960) 
Default-568h@2x.png (640x1136)

enter image description here

同样适用于AppIcon


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