支持iOS6和iOS7的启动屏幕 - 强制使用闪屏界面

23

当涉及到启动屏幕时,我找不到一种统一的方法来模仿应用程序在iOS6和iOS7上的外观(同时支持两个版本)。如果我们有一个工具栏菜单,我们是否被迫制作一个常规的闪屏画面或类似的标志,还是您们有任何好的想法来解决这个问题?

6个回答

73
在 iOS 7 中,应用程序可以根据所运行的 iOS 版本使用不同的启动图像。要提供不同的启动图像,请将 UILaunchImages 键添加到 Info.plist 文件中,并使用字典来描述每个启动图像。
它使用以下键:
- UILaunchImageName - 包含 PNG 图像文件名称的字符串。图像文件必须位于应用程序包的顶层。在此键的名称中,不能包括文件名扩展名,也不能包括修饰符,如 @2x、-568h、~iphone 或 ~ipad。 - 如果适当,您的图像文件名仍可能包括 @2x、-568h、~iphone 或 ~ipad 修饰符,尽管这些实际上并不是必需的。系统在选择要加载的文件时会自动考虑这些修饰符。 - UILaunchImageMinimumOSVersion - 对于 iOS 7,这应该是一个字符串“7.0”。 - UILaunchImageOrientation – 包含以下其中之一的字符串:Portrait、PortraitUpsideDown、Landscape、LandscapeLeft、LandscapeRight。 - UILaunchImageSize – 字符串,指定宽度和高度,例如:“{320, 480}”。必须根据设备在纵向方向上指定宽度和高度。换句话说,针对同一设备的纵向和横向图像应该具有相同的宽度和高度。 - 如果存在此键,则 iOS 7 将专门使用它来获取启动图像。
在 Xcode 中,要创建 PLIST 条目,请转到“your-name-of-application.plist”。在空白区域中,右键单击并选择“Add Row”。确保它成为顶级项目,而不是 .plist 中其他一些信息的子项目。写入:UILaunchImages。右键单击此 UILaunchImages 并选择值类型“Array”。
如果展开此数组以使左侧的指示器三角形指向下,则第一次为空,但如果在打开时选择“添加行”,则会创建一个子行。现在执行此操作:
- 右键单击 UILaunchImages 并选择“Add row”。 - 右键单击此新行 (item 0) 并选择值类型“Dict”。
继续按照三角形指示器打开这些项,右键单击和“Add row”:
- UILaunchImageMinimumOSVersion - 此项名称设置为“7.0”,值类型设置为“string”。 - UILaunchImageName – 设置为一个基本的 iOS7 启动图像文件名。例如,在我的情况下,它是“iOS7-Default”。 - UILaunchImageOrientation - 例如:Portrait。 - UILaunchImageSize - 基本 iOS7-Default.png 的大小:"{320, 480}"。程序将查找所有以该基名称的排列组合为基础的文件。请记住选择不带 ipad/iphone/portrait/landscape 或 .png 规范的文件基名称。
注意:在添加 iOS 6 图像后,Xcode 已经为我创建了以下项:
- UILaunchImageFile~ipad … = “Default” - 这是正确的 - UILaunchImages~ipad … 需要更新两个条目以使用 iOS 7 版本,因为它们现在错误地保留了 iOS 6 版本。我已将这些项命名为 Default1024x768 和 Default768x1024,并在每个名称前加上了“iOS7-”,然后就完成了。
直接编辑 plist 的示例:
<key>UILaunchImages</key>
  <array>
    <dict>
      <key>UILaunchImageMinimumOSVersion</key>
      <string>7.0</string>
      <key>UILaunchImageName</key>
      <string>iOS7-Default </string>
      <key>UILaunchImageOrientation</key>
      <string>Portrait</string>
      <key>UILaunchImageSize</key>
      <string>{320, 480}</string>
    </dict>
  </array>

[jd编辑:修正了"UILaunchImages"的拼写错误]


UILaunchImage在横向模式下应该采用“Landscape (right home button)”样式,而不是“LandscapeRight”样式。截至7.0.2 / Xcode 5.0,存在一个问题,即如果存在iOS6图像,则无法使用iOS7横向图像。 - Ben Flynn
2
非常感谢您提供如此详细的答案。 - Isuru
我想在我的应用程序中添加新的多任务支持,因此我应该使用启动屏幕替换启动图像,在iOS 8.0及更高版本中可以正常工作,但是如您所知,启动屏幕不支持iOS 7,当我在iOS 7设备(4s)上运行它时,会出现黑屏。我按照您说的做了,但不幸的是对我没有起作用。 - HamGuy

8
在项目浏览器中突出显示项目,选择“常规”,向下滚动至“应用程序图标”,单击“使用资源目录”,然后选择“迁移”。您现有的图标和启动画面将自动迁移到资源目录中。接下来,您可以选择该目录以添加其他图像。
要添加新图像,您只需从Finder中拖放到每种图像类型的方块中即可。
(注意:资源目录编辑器令人费解地使用了一个不可滚动的宽格式,如果您的屏幕不够宽,右侧可能会缺少一些内容。)

你刚刚以一种非常容易理解的方式解释了资产目录。我现在正在使用资产目录,并对这个功能印象深刻。 - ConfusedDeer
@ConfusedDeer - 是的,起初它非常晦涩难懂 -- 我曾想过不使用它。但一旦我开始使用它,对于基本情况来说,似乎相当简单和直截了当。 - Hot Licks
我很渴望使用它,但在阅读其他教程和苹果的教程时,我没有意识到它是什么。在阅读了您的解释后,我才明白他们为什么把它弄得这么复杂。我已经启用了它。 - ConfusedDeer
3
是的,似乎许多苹果文档的目的是为了模糊不清和混淆。 - Hot Licks

5

您还可以使用Xcode 5中的新图像目录功能来管理多个版本的应用启动图。


但是你如何说服应用程序使用图像目录? - Hot Licks
2
没关系——我已经想通了。在项目浏览器中突出显示项目,选择“常规”,向下滚动到“应用程序图标”,单击“使用资产目录”,然后选择“迁移”。所有操作都将自动完成。 - Hot Licks
如何将目录中的图像本地化?(我指的是启动图像) - Ricardo

0

我之前也遇到了同样的问题,这是我为 iOS 7 开发的一个旧应用。使用 Xcode 6 进行归档和上传都没有问题,但是在 Xcode 7 中出现了“二进制文件未优化为 iPhone5”的错误。尝试了许多其他解决方案后,我只有通过删除所有与启动图像有关的引用(因为我正在使用通用的 .xib 文件)并将部署目标从 7.0 设置为 8.0 才成功。


0
现在您可以直接在images.xcassets中添加应用程序图标和启动画面图片, 点击“+”按钮,为iPhone5与iOS 5、6、7、iPhone4、iPad添加相应的图像集。 现在不需要设置像default.png、default@2x.png这样的图像名称了。

0

使用images.xcassets存储库时,请注意它不允许您本地化启动画面。

我目前正在尝试获取我们应用程序的法语和英语版本。

WWW> 如果您需要本地化启动画面,这种“plist”方法是否有效?


我知道现在可能不相关,但对于其他查看此问题的人来说,iOS设计指南明确告诉您无法本地化LaunchImage中的文本。文本。启动图像是静态的,因此您在其中显示的任何文本都不会被本地化。 - Sojurn

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