我正在为 iOS 6.1 和 7(使用 Xcode 5)开发一个 iPhone 应用程序。我对 iPad 启动图像有疑问。
在 iPad 7.0 和 7.0.2 上,启动图像未显示(在 6.1 中有效!):我在加载应用程序时出现黑屏。
尽管我设置了 iPad 和 iPad 视网膜(横向和纵向)所需的所有启动图像并且我使用资产目录,但我在 iPhone 6.1 和 7.0.2 上没有遇到这个问题。
我错过了什么?
我正在为 iOS 6.1 和 7(使用 Xcode 5)开发一个 iPhone 应用程序。我对 iPad 启动图像有疑问。
在 iPad 7.0 和 7.0.2 上,启动图像未显示(在 6.1 中有效!):我在加载应用程序时出现黑屏。
尽管我设置了 iPad 和 iPad 视网膜(横向和纵向)所需的所有启动图像并且我使用资产目录,但我在 iPhone 6.1 和 7.0.2 上没有遇到这个问题。
我错过了什么?
最近,我的专为 iPhone 设计的应用程序遇到了同样的问题,我遇到了启动图像不会出现在 iPad 中的问题(在 iPad ios >= 7.0.x 上,启动图像没有显示我在应用程序加载时出现黑屏(在 iPad ios < 7.0.x 中它工作正常))。
我没有遇到这个问题,iPhone 在所有 iOS 版本中都可以正常工作。
解决方案:更新到资产目录以管理您的应用程序的图像并仅针对 iOS 6 和更早版本。
脚步 :
步骤1:
第2步:
第 3 步:在右上角单击“属性检查器”图标。您可以在此处设置启动映像的目标操作系统。
取消选中 iPhone 的 iOS 7 复选框,现在您应该能够在 iOS >= 7.0.x 上看到 iPad 的启动图像。
如果你有和我一样的情况,那就是解决方案:
我的应用程序只有横向,只有 iOs7,ipad\iphone (XCode 5)。
问题: iphone(和模拟器)黑色启动,ipad正常启动。
解决方案:转到 Images.xcassets - Launch Images - 选择它。取消选中右侧所有“iOs7 及更高版本”框。选中“iOs6 和之前”框并用图像填充空白区域。
奇怪,但有效。
根据 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 模拟器中测试您的应用程序,并验证其行为是否符合预期。
我请求 Apple 支持,结果发现这是一个错误。他们要求我报告,我做到了。这是报告 ID:15340531。现在由他们决定。
再次尝试设置图像,确保初始屏幕的分辨率符合 iOS 7 指南
我知道这听起来很愚蠢。当我以 psd 格式保存带有 jpg 扩展名的文件时,我遇到了类似的错误。保存启动图像时只需单击 1 次错误。
在尝试了这里找到的几种解决方案后,我怀疑 iPhone 试图以横向启动,因此没有找到任何相应的启动图像。事实上,模拟器是在 Landscape 中启动的,原因我不明白。
最后,在阅读了Apple文档后,我发现可能是info.plist文件的“支持的界面方向”中的键顺序不合适。肖像是最后一个项目。当它是第一个项目时,应用程序以纵向模式启动并找到图像。
从设备或模拟器中删除以前安装的应用程序,然后在清理后重新启动应用程序。
我遇到了启动图像不会出现在 iOS 7 中的 iPhone(3.5 或 4 英寸)中的问题,但 iPad 在 iOS 7 中没有问题。
长话短说,我只禁用了启动图像的资产目录。所以我以老式的方式添加启动图像。这似乎解决了问题。
明天我将不得不做更多的测试,但似乎问题已经解决了(至少在我的情况下)。
我假设当您使用资产目录时,您已确保正确添加了 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 上,所有启动图像必须包含状态栏区域是必须的。请仔细阅读 Apple iOS7 UI 转换指南(https://developer.apple.com/library/ios/documentation/userexperience/conceptual/TransitionGuide/TransitionGuide.pdf)中的“每个应用程序必须做的事情”部分。
以下屏幕截图应该解释我在说什么 -
例如,您可以看到 iOS6.1 及之前版本的 iPad Landscape Retina 图像尺寸为 2048x1496(不包括状态栏的 40 像素),但 iOS7.0 及更高版本的相同图像的尺寸预计为 2048x1536(包括状态栏的 40 像素)酒吧)。因此,如果您没有相应地更改图像,您将在 iPad 7.0 及更高版本上看到图像黑屏。在 iPhone 上,您不会遇到这个问题,因为 iPhone 启动图像总是覆盖状态栏,无论是 iOS6.0 还是 iOS7.0,因此 iPhone 启动图像已经满足了新的 UI 要求。
在 Xcode 5 中,确保添加了应用目标中提到的所有需要的图像。
我在横向中遇到了类似的问题,我的 iOS 7 启动图像没有显示,而 iOS 6 显示。我的是 iPhone Retina 3.5 英寸的发布图片。
由于我有另一个没有共享此问题的纵向应用程序,因此我做了两件事:
在 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)
在 View Controller 中实现了这个方法:
-(NSUInteger)supportedInterfaceOrientations{
return UIInterfaceOrientationMaskLandscape;
}
无论有无资产目录,这都适用。
我发现这个答案适用于我们的应用程序(仅限 iPhone,但在 iPad 上使用):https ://stackoverflow.com/a/19448782/1258419
从那个答案总结:
怎么做。转到资产目录。在右上角单击“属性检查器”图标。您可以在此处设置启动映像的目标操作系统。取消选中 iPhone 的 iOS 7 复选框。现在您应该能够看到这些设备的启动图像。
这是 iOS 8 的更新。
当我尝试将 a 添加LaunchImage
到我的 iOS 8 应用程序时,我遇到了同样的问题。
Apple 允许开发人员使用默认名称为 的 xibLaunchScreen.xib
来呈现 iOS 8 的启动视图。我相信开发人员可以使用LaunchImage
或LaunchScreen.xib
。不幸的是,我找不到任何描述介绍LaunchImage
后如何处理的文档LaunchScreen.xib
。LaunchImage
当我尝试用作启动视图时,总是出现黑屏。
我的解决方案是:
别想了LaunchImage
。使用LaunchScreen.xib
. (不过,您必须在资产目录中保留一个空白LaunchImage
。我相信这是一个错误。)
将 anUIImageView
拖到 xib 并使其UIImageView
全屏显示。记住要考虑尺寸等级和约束。
将分辨率足够 iPhone 6 plus 的图像设置为UIImageView
.
检查您的所有图像,看看它是否正确放置在资源中并正确命名和调整大小。
还要检查您允许的方向,并相应地将图像添加到资产。
我有同样的问题。我不得不做一个解决方法:对所有 iOS 版本使用默认图像,并从 info.plist 中删除 UILaunchImageFile 键。
我不能为 iOS 7 和以前的版本使用不同的启动图像,因此,我必须为所有人使用相同的“艺术”图像,而不是模仿应用程序的第一个视图(Apple 推荐并且我更喜欢)的图像,但在至少我不再黑屏了。
看起来 UILaunchImageFile 键允许在 iOS 7 和以前的版本中使用不同的启动图像,但在 iOS 7 中的 Retina iPad 上无法正常工作。
警告:我仍在测试应用程序,所以我不知道是否会产生一些副作用。
我只是忘记在我的视图控制器中调用 super.loadView() ......
override func loadView() {
super.loadView()
}
我也遇到了类似的问题,但它的解决方案很简单(就我而言)。
我所做的只是跟随——
1.添加一个新文件(如果你还没有添加的话)Launchscreen.storyboard
2.获取一个UIViewController
,标记为,Is Initial View Controller
然后在其中添加一个UIImageView
并设置您要在启动应用程序时显示的图片。确保你给出了这个UIImageView
必需的约束。
3.转到项目->常规->应用程序图标和启动图像,然后选择Launchscreen.storyboard作为启动屏幕文件(会有一个下拉菜单)。