我一直难以弄清楚如何从 Xcode5 发布一个在同一版本中支持 IOS7 和 IOS 6+ 的应用程序,并且资产(图标和闪屏)都可以正确加载,并且仍然正确渲染 IOS 6 的资产。我的主要问题是试图让 IOS 6 仍然在没有阴影或突出显示的情况下渲染图标,因为在 Xcode 5 的 GUI 中甚至不再提供“prerendered”选项。任何想法如何让所有内容和图标正确呈现并支持多个操作系统版本?
安德鲁
我一直难以弄清楚如何从 Xcode5 发布一个在同一版本中支持 IOS7 和 IOS 6+ 的应用程序,并且资产(图标和闪屏)都可以正确加载,并且仍然正确渲染 IOS 6 的资产。我的主要问题是试图让 IOS 6 仍然在没有阴影或突出显示的情况下渲染图标,因为在 Xcode 5 的 GUI 中甚至不再提供“prerendered”选项。任何想法如何让所有内容和图标正确呈现并支持多个操作系统版本?
安德鲁
Apple 对 IOS 7 应用程序的要求有明确的指导方针,但即便如此,我还是在使单个应用程序支持多个操作系统版本时遇到了错误。让它开始工作后,我想我会指出一些对我来说是挂机的地方,以便将来帮助别人。
我首先更新了我的整个应用程序以干净地支持 IOS 7,然后返回并启用以前的版本,但该过程不是必需的。
只要确保您首先设置正确的部署目标
一旦您设置了部署目标,Xcode5 就会很好地更改支持多个操作系统版本所需的默认资产列表。确保以所需的分辨率和所需的文件名重新上传正确版本的图标(IOS6-IOS7 支持如下所示)
对启动图像执行相同的操作,请注意,您必须将启动图像重命名为新名称,如果您允许,Xcode 会尝试为您执行此操作。请注意下面的新尺寸,因为 IOS7 在状态栏后面扩展了启动图像背景。
最后,手动添加下面的两个 .plist 标志,您应该设置为让您的图标在 IOS 版本之间呈现一致,没有光泽(解释如下)
IOS7 在其新的平整度中删除了以前版本所做的后处理,它们为图标添加了高光和光泽效果。该效果不再适用于 IOS 7 应用程序,但如果您在 IOS 6 上从 Xcode5 加载应用程序,它将重新应用默认的光泽效果。这令人愤怒,因为 Xcode 中不再有“预渲染”GUI 标志来禁用该后处理。如上所述,您需要手动将标志添加到应用程序的 plist。就我而言,我必须在两个位置添加标志以强制 IOS 6 停止应用效果。您可以通过直接打开文件或导航到项目概述中的设置来访问 plist。您可能需要从模拟器中卸载应用程序,然后重新构建应用程序以强制模拟器丢失旧图标的缓存。
如果您设置资产目录,您可以打开它选择图像,然后转到检查器并勾选此框
只需使用“资产目录”(您可以从目标中的常规中选择)。
这将在您的项目上创建一个 images.xcassets,您可以轻松地拖动您的 iOS 7 之前和 iOS 7 的图标设计。
更新: 所以在 iOS 7 正式发布后,我现在可以这样写:
在资产目录本身上,选择要设置为预渲染的Appicon集,然后转到Attribute Inspector并标记“iOS 图标已预渲染”。当然,您也可以在那里设置您想要支持的操作系统和设备(它会创建所有选项,因此您只需拖放即可进行设置)。
需要注意的重要一点是,由于某种原因,如果您在此目录中使用多个目标和多个集合,则必须手动添加目标成员资格。为此,只需标记“资产目录”文件,转到文件检查器并标记您要使用它的所有目标。我认为当您从目标设置中选择“资产目录”时,Apple 应该自动执行此操作,但直到那时我决定在这里提及(花了我一个小时才弄清楚)。
我最近经历了这个。似乎默认情况下它只显示以下内容。
简单的解决方法是添加一个新的 AppIcon
为您提供所有这些选项。
我的经验:
创建新的空应用程序时,它将创建一个“默认”应用程序图标/启动图像资产目录,如@Smick 所述,该目录不完整。
这个新“目录”令人讨厌的部分是它不显示图像大小。
要解决此问题,请在项目导航器上选择项目,然后在“常规”上,您会注意到 2 个区域 - 应用程序图标和启动图像。这些将指向资产目录。您可以将其更改为“不使用资产目录”。之后,界面将变为文件/维度列表。
但是这个接口有几个问题:
对于 Xcode 6
对于LaunchImage,您必须确保检查 iOS 6.0 和之前的 iPhone (Portrait) 或 iPad // 取决于您的项目配置
尺寸
Default.png (320x480)
Default@2x.png (640x960)
Default-568h@2x.png (640x1136)
与AppIcon相同