37

我正在为 iOS 6.1 和 7(使用 Xcode 5)开发一个 iPhone 应用程序。我对 iPad 启动图像有疑问。

在 iPad 7.0 和 7.0.2 上,启动图像未显示(在 6.1 中有效!):我在加载应用程序时出现黑屏。

尽管我设置了 iPad 和 iPad 视网膜(横向和纵向)所需的所有启动图像并且我使用资产目录,但我在 iPhone 6.1 和 7.0.2 上没有遇到这个问题。

我错过了什么?

4

20 回答 20

33

最近,我的专为 iPhone 设计的应用程序遇到了同样的问题,我遇到了启动图像不会出现在 iPad 中的问题(在 iPad ios >= 7.0.x 上,启动图像没有显示我在应用程序加载时出现黑屏(在 iPad ios < 7.0.x 中它工作正常))。

我没有遇到这个问题,iPhone 在所有 iOS 版本中都可以正常工作。

解决方案:更新到资产目录以管理您的应用程序的图像并仅针对 iOS 6 和更早版本。

脚步 :

步骤1:

资产目录更新

第2步:

选择迁移

第 3 步:在右上角单击“属性检查器”图标。您可以在此处设置启动映像的目标操作系统。

取消选中 iPhone 的 iOS 7 复选框

取消选中 iPhone 的 iOS 7 复选框,现在您应该能够在 iOS >= 7.0.x 上看到 iPad 的启动图像。

于 2013-11-27T08:02:03.087 回答
24

如果你有和我一样的情况,那就是解决方案:

我的应用程序只有横向,只有 iOs7,ipad\iphone (XCode 5)。

问题: iphone(和模拟器)黑色启动,ipad正常启动。

解决方案:转到 Images.xcassets - Launch Images - 选择它。取消选中右侧所有“iOs7 及更高版本”框。选中“iOs6 和之前”框并用图像填充空白区域。

奇怪,但有效。

于 2014-02-22T17:31:01.340 回答
12

根据 Apple 的文档(链接);一个空的 iPad 特定故事板可能就是答案。我还看到未在情节提要中设置初始视图控制器的问题导致黑屏。此问题的一个变体可能是应用 plist 中的设置不正确。

技术问答 QA1780 为什么我的应用在 iPad 上启动时黑屏?

问:为什么我的应用程序在 iPad 上启动时黑屏?

答:专为 iPhone 设计的应用程序在 iPad 上运行时可能会启动到空白屏幕。这是由于应用程序包中存在空的 iPad 特定故事板以及应用程序的信息属性列表 (Info.plist) 文件中的 iPad 特定 UIMainStoryboardFile 键造成的。如果选择了 Universal 选项,两者都是由各种 Xcode 模板项目自动创建的。

...

在 Xcode 中

在文件导航器中查找名为 MainStoryboard_iPad.storyboard 的文件。如果此文件存在,请将其从您的项目中删除。

在您应用的信息属性列表中

查找名为 Main storyboard file base name (iPad) 或 UIMainStoryboardFile~ipad 的键。如果此密钥存在,请将其删除。您还应该删除任何其他以 (iPad) 或 ~ipad 为后缀的键。

最后,在 iPad 或 iPad 模拟器中测试您的应用程序,并验证其行为是否符合预期。

于 2013-10-10T20:27:29.007 回答
9

我请求 Apple 支持,结果发现这是一个错误。他们要求我报告,我做到了。这是报告 ID:15340531。现在由他们决定。

于 2013-10-29T20:33:47.203 回答
6

使用 LaunchScreen.storyboard

在我在General Project Settings中找到以下设置之前,我遇到了类似的问题。

  1. 主界面设置为主故事板文件。我的叫Main.storyboard.

在此处输入图像描述

  1. 启动屏幕文件设置为启动屏幕故事板文件。我的叫LaunchScreen.storyboard. (这是我最初省略的。)

在此处输入图像描述

之后首先加载启动屏幕,然后很快加载主故事板。

于 2015-10-15T02:53:09.520 回答
4

再次尝试设置图像,确保初始屏幕的分辨率符合 iOS 7 指南

于 2013-10-07T10:49:15.190 回答
3

我知道这听起来很愚蠢。当我以 psd 格式保存带有 jpg 扩展名的文件时,我遇到了类似的错误。保存启动图像时只需单击 1 次错误。

于 2013-10-14T20:52:26.333 回答
3

在尝试了这里找到的几种解决方案后,我怀疑 iPhone 试图以横向启动,因此没有找到任何相应的启动图像。事实上,模拟器是在 Landscape 中启动的,原因我不明白。

最后,在阅读了Apple文档后,我发现可能是info.plist文件的“支持的界面方向”中的键顺序不合适。肖像是最后一个项目。当它是第一个项目时,应用程序以纵向模式启动并找到图像。

于 2014-02-06T10:44:55.333 回答
2

从设备或模拟器中删除以前安装的应用程序,然后在清理后重新启动应用程序。

于 2013-10-07T11:05:07.847 回答
2

我遇到了启动图像不会出现在 iOS 7 中的 iPhone(3.5 或 4 英寸)中的问题,但 iPad 在 iOS 7 中没有问题。

长话短说,我只禁用了启动图像的资产目录。所以我以老式的方式添加启动图像。这似乎解决了问题。

明天我将不得不做更多的测试,但似乎问题已经解决了(至少在我的情况下)。

于 2013-11-19T07:48:25.747 回答
1

我假设当您使用资产目录时,您已确保正确添加了 Images.xcassets 目标成员资格。我之所以提到这一点,是因为如果您有多个目标,看起来您必须手动添加它们(并且您没有提供任何屏幕截图,因此可以确定)。

现在您还没有真正提供项目中 Images.xcassets 文件夹的“LaunchImage”概述的屏幕截图,我只能猜测可能的原因。鉴于启动图像适用于 iPhone(6.1 和 7.0.2 和 iPad (6.1) 并且不适用于 iPad(7.0 及更高版本)这一事实,我想您或许可以看看iPad Portrait 和 iPad Landscape 的图像适用于 iOS7。具体来说,您应该看到您的启动图像,而不是所附图片中看到的空矩形- iOS7 iPad 启动图像(纵向和横向)- 尺寸不正确

这可能是因为您仍然创建了 iOS7 的 iPad 启动图像,但不包括状态栏区域。在 iOS7 之前,iPad 的启动图像被创建为排除状态栏区域,但在 iOS7 上,所有启动图像必须包含状态栏区域是必须的。请仔细阅读 Apple iOS7 UI 转换指南(https://developer.apple.com/library/ios/documentation/userexperience/conceptual/TransitionGuide/TransitionGuide.pdf)中的“每个应用程序必须做的事情”部分。

以下屏幕截图应该解释我在说什么 - iPad 启动图像尺寸 - iOS6 和 iOS7

例如,您可以看到 iOS6.1 及之前版本的 iPad Landscape Retina 图像尺寸为 2048x1496(不包括状态栏的 40 像素),但 iOS7.0 及更高版本的相同图像的尺寸预计为 2048x1536(包括状态栏的 40 像素)酒吧)。因此,如果您没有相应地更改图像,您将在 iPad 7.0 及更高版本上看到图像黑屏。在 iPhone 上,您不会遇到这个问题,因为 iPhone 启动图像总是覆盖状态栏,无论是 iOS6.0 还是 iOS7.0,因此 iPhone 启动图像已经满足了新的 UI 要求。

于 2013-10-17T07:41:26.127 回答
1

在此处输入图像描述

在 Xcode 5 中,确保添加了应用目标中提到的所有需要​​的图像。

于 2013-10-10T12:45:08.450 回答
1

我在横向中遇到了类似的问题,我的 iOS 7 启动图像没有显示,而 iOS 6 显示。我的是 iPhone Retina 3.5 英寸的发布图片。

由于我有另一个没有共享此问题的纵向应用程序,因此我做了两件事:

  1. 在 info.plist 中,在“支持的界面方向”下,我也添加了 2 种纵向模式,并将它们放在横向之前,如下所示:

    Item 0: Portrait (top home button)
    Item 1: Portrait (bottom home button)
    Item 2: Landscape (right home button)
    Item 3: Landscape (left home button)
    
  2. 在 View Controller 中实现了这个方法:

    -(NSUInteger)supportedInterfaceOrientations{
    return UIInterfaceOrientationMaskLandscape; 
    

    }

无论有无资产目录,这都适用。

于 2014-03-01T10:57:30.943 回答
1

我发现这个答案适用于我们的应用程序(仅限 iPhone,但在 iPad 上使用):https ://stackoverflow.com/a/19448782/1258419

从那个答案总结:

怎么做。转到资产目录。在右上角单击“属性检查器”图标。您可以在此处设置启动映像的目标操作系统。取消选中 iPhone 的 iOS 7 复选框。现在您应该能够看到这些设备的启动图像。

于 2013-11-21T20:20:31.383 回答
1

这是 iOS 8 的更新。

当我尝试将 a 添加LaunchImage到我的 iOS 8 应用程序时,我遇到了同样的问题。

Apple 允许开发人员使用默认名称为 的 xibLaunchScreen.xib来呈现 iOS 8 的启动视图。我相信开发人员可以使用LaunchImageLaunchScreen.xib。不幸的是,我找不到任何描述介绍LaunchImage后如何处理的文档LaunchScreen.xibLaunchImage当我尝试用作启动视图时,总是出现黑屏。

我的解决方案是:

  1. 别想了LaunchImage。使用LaunchScreen.xib. (不过,您必须在资产目录中保留一个空白LaunchImage。我相信这是一个错误。)

  2. 将 anUIImageView拖到 xib 并使其UIImageView全屏显示。记住要考虑尺寸等级和约束。

  3. 将分辨率足够 iPhone 6 plus 的图像设置为UIImageView.

于 2015-03-17T16:10:17.440 回答
0

检查您的所有图像,看看它是否正确放置在资源中并正确命名和调整大小。

还要检查您允许的方向,并相应地将图像添加到资产。

于 2013-10-14T09:09:44.967 回答
0

我有同样的问题。我不得不做一个解决方法:对所有 iOS 版本使用默认图像,并从 info.plist 中删除 UILaunchImageFile 键。

我不能为 iOS 7 和以前的版本使用不同的启动图像,因此,我必须为所有人使用相同的“艺术”图像,而不是模仿应用程序的第一个视图(Apple 推荐并且我更喜欢)的图像,但在至少我不再黑屏了。

看起来 UILaunchImageFile 键允许在 iOS 7 和以前的版本中使用不同的启动图像,但在 iOS 7 中的 Retina iPad 上无法正常工作。

警告:我仍在测试应用程序,所以我不知道是否会产生一些副作用。

于 2013-11-10T21:44:26.963 回答
0

由于 iOS 13 及更高版本,应用启动与早期版本不同。

从以下 URL 获取解决方案。

https://stackoverflow.com/a/59913274/883505

于 2020-01-25T18:46:46.080 回答
0

我只是忘记在我的视图控制器中调用 super.loadView() ......

override func loadView() {
    super.loadView()
}
于 2020-06-08T07:31:55.617 回答
0

我也遇到了类似的问题,但它的解决方案很简单(就我而言)。

我所做的只是跟随——

1.添加一个新文件(如果你还没有添加的话)Launchscreen.storyboard

2.获取一个UIViewController,标记为,Is Initial View Controller然后在其中添加一个UIImageView并设置您要在启动应用程序时显示的图片。确保你给出了这个UIImageView必需的约束。

3.转到项目->常规->应用程序图标和启动图像,然后选择Launchscreen.storyboard作为启动屏幕文件(会有一个下拉菜单)。

于 2019-01-24T05:32:07.863 回答