iPad上的黑屏而不是启动图像
Posted
技术标签:
【中文标题】iPad上的黑屏而不是启动图像【英文标题】:Black screen instead of launch image on iPad 【发布时间】:2013-10-13 16:46:32 【问题描述】:我正在为 ios 6.1 和 7(使用 Xcode 5)开发 iPhone 应用程序。我对 iPad 启动图像有疑问。
在 iPad 7.0 和 7.0.2 上,启动图像未显示(在 6.1 中有效!):加载应用时出现黑屏。
我在 iPhone 6.1 和 7.0.2 上没有遇到这个问题,尽管我设置了 iPad 和 iPad Retina(横向和纵向)所需的所有启动图像并且我使用了 Asset Catalog。
我错过了什么?
【问题讨论】:
您在运行项目之前是否清理过项目?还有 alt+shift+cmd+k 来清理你的构建导向器。 完成了,但还是不行! :( 您是否检查过用作启动画面的图像是否已在您的项目中定位? 从您的项目中删除所有启动图像并尝试重新添加它们。您的项目中还有 Images.xcassets “文件夹”吗?就像这个问题一样:***.com/questions/18758882/… 您可能已经想到了,但是您可以通过创建自定义视图来使用自己的自定义 SplashScreen,当应用程序完成启动并显示一段时间后,您可以转到根视图控制器. 【参考方案1】:我只是忘记在我的视图控制器中调用 super.loadView()...
override func loadView()
super.loadView()
【讨论】:
【参考方案2】:由于 iOS 13 及更高版本,应用启动与早期版本不同。
从以下网址获取解决方案。
https://***.com/a/59913274/883505
【讨论】:
【参考方案3】:我也遇到了类似的问题,但它的解决方案很简单(就我而言)。
我所做的只是跟随 -
1.添加一个新文件(如果你还没有添加的话)Launchscreen.storyboard
2.获取UIViewController
,将其标记为Is Initial View Controller
,然后在其中添加UIImageView
,并设置要在启动应用程序时显示的图片。确保你给了这个UIImageView
必需的约束。
3. 前往 Project->General->App Icons and Launch images 并选择 Launchscreen.storyboard 作为 Launch Screen File(会有一个下拉菜单)。
【讨论】:
【参考方案4】:使用 LaunchScreen.storyboard
在常规项目设置中找到以下设置之前,我遇到了类似的问题。
-
将您的主界面设置为您的主故事板文件。我的叫
Main.storyboard
。
-
将您的启动屏幕文件设置为启动屏幕故事板文件。我的叫
LaunchScreen.storyboard
。 (这是我最初省略的。)
之后首先加载启动屏幕,然后很快加载主故事板。
【讨论】:
【参考方案5】:根据 Apple 的文档 (link);一个空的 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 模拟器中测试您的应用,并验证其行为是否符合预期。
【讨论】:
【参考方案6】:这是 iOS 8 的更新。
当我尝试将 LaunchImage
添加到我的 iOS 8 应用程序时遇到了同样的问题。
Apple 允许开发人员使用默认名称为 LaunchScreen.xib
的 xib 来呈现 iOS 8 的启动视图。我相信开发人员可以使用 LaunchImage
或 LaunchScreen.xib
。不幸的是,在引入LaunchScreen.xib
之后,我找不到任何描述如何处理LaunchImage
的文档。当我尝试使用LaunchImage
作为启动视图时,总是出现黑屏。
我的解决办法是:
别想LaunchImage
。使用LaunchScreen.xib
。 (不过,您必须在资产目录中保留一个空的 LaunchImage
。我相信这是一个错误。)
将UIImageView
拖到xib 并使UIImageView
全屏显示。 记得考虑尺寸等级和约束。
给UIImageView
设置一张分辨率足够iPhone 6 plus的图片。
【讨论】:
【参考方案7】:如果你有和我一样的情况,那就是解决办法:
我的应用程序只有横向,只有 iOs7,ipad\iphone (XCode 5)。
问题:iphone(和模拟器)黑屏,ipad正常启动。
解决方案:转到 Images.xcassets - Launch Images - 选择它。取消选中右侧所有 “iOs7 及更高版本” 框。选中“iOs6 及之前” 框并用图像填充空白处。
奇怪,但有效。
【讨论】:
这绝对是有道理的,但它绝对有效。谢谢! 不太适合我,但它会显示一些启动图像,所以你在正确的轨道上 这很好用,但现在我收到警告“需要 iOS 7.0 及更高版本的 iPhone Retina(4 英寸)启动图像。” +1 在过去的几个小时里,我一直在思考这个问题。谢谢【参考方案8】:我在横向中遇到了类似的问题,我的 iOS 7 启动图像没有显示,而 iOS 6 显示。我的是 iPhone Retina 3.5 英寸的发布图片。
由于我有另一个纵向应用程序没有遇到这个问题,所以我做了 2 件事:
在 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)
在视图控制器中实现了这个方法:
-(NSUInteger)supportedInterfaceOrientations
return UIInterfaceOrientationMaskLandscape;
无论有没有资产目录,这都适用。
【讨论】:
【参考方案9】:在尝试了这里找到的几种解决方案后,我怀疑 iPhone 试图以横向启动,因此没有找到任何相应的启动图像。事实上,模拟器是在 Landscape 中启动的,原因我不明白。
最后,在阅读了Apple文档后,我发现可能是info.plist文件的“支持的界面方向”中的键顺序不合适。肖像是最后一个项目。当它是第一项时,应用程序以纵向模式启动并找到图像。
【讨论】:
【参考方案10】:最近我的应用程序只为 iPhone 设计时遇到了同样的问题,我遇到了启动图像不会出现在 iPad 中的问题(在 iPad ios >= 7.0.x 上,启动图像没有显示我得到黑屏,而应用程序正在加载(在 iPad ios
我没有遇到这个问题,iPhone 在所有 iOS 版本中都能正常工作。
解决方案:更新到资产目录以管理您应用的图像并仅针对 iOS 6 和更早版本。
步骤:
第 1 步:
第二步:
第 3 步:在右上角单击“属性检查器”图标。您可以在此处设置启动图像的目标操作系统。
取消选中 iPhone 的 iOS 7 复选框,现在您应该能够在 iOS >= 7.0.x 上看到 iPad 的启动图像。
【讨论】:
现在不错的解决方法,但我添加了另一个关于苹果的错误报告 有效,但我现在收到警告:Images.xcassets:需要适用于 iOS 7.0 及更高版本的 iPhone Retina(4 英寸)启动图像。我想这暂时还可以。希望苹果能解决这个问题。 谢谢!这在 Xcode 中似乎有点错误。我担心“迁移”会搞砸我现有的资产目录,但它只是在其中添加了一个新条目,其中包含我刚刚删除的默认黑屏,一切都很好。奇怪的是,您需要执行这个毫无意义的迁移步骤,但这对我没有负面影响。【参考方案11】:我发现这个答案适用于我们的应用程序(仅限 iPhone,但在 iPad 上使用):https://***.com/a/19448782/1258419
从那个答案总结:
怎么做。转到资产目录。在右上角单击“属性检查器”图标。您可以在此处设置启动映像的目标操作系统。取消选中 iPhone 的 iOS 7 复选框。现在您应该可以看到这些设备的启动图像了。
【讨论】:
【参考方案12】:我遇到了启动图像在 iOS 7 的 iPhone(3.5 或 4 英寸)中不会出现的问题,但 iPad 在 iOS 7 上没有问题。
长话短说,我只为启动图像禁用了资产目录。所以我以老式的方式添加启动图像。这似乎解决了问题。
我明天必须做更多的测试,但问题似乎已经解决了(至少在我的情况下)。
【讨论】:
【参考方案13】:我遇到了同样的问题。 我不得不采取一种解决方法:对所有 iOS 版本使用默认图像并从 info.plist 中删除 UILaunchImageFile 键。
我不能为 iOS 7 和以前的版本使用不同的启动图像,因此,我必须为所有人使用相同的“艺术”图像,而不是模仿应用程序的第一个视图的图像(Apple 推荐并且我更喜欢) ,但至少我不再黑屏了。
看起来允许在 iOS 7 和以前版本中使用不同启动图像的 UILaunchImageFile 键在 iOS 7 中的 Retina iPad 上无法正常工作。
警告:我仍在测试应用程序,所以我不知道是否会产生一些副作用。
【讨论】:
【参考方案14】:我请求 Apple 支持,结果发现这是一个错误。他们要求我报告,我做到了。这是报告 ID:15340531。 现在由他们决定。
【讨论】:
【参考方案15】:我假设当您使用资产目录时,您已确保正确添加了 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 要求。
【讨论】:
【参考方案16】:我知道这听起来很愚蠢。当我以 psd 格式保存带有 jpg 扩展名的文件时,我遇到了类似的错误。保存启动图像时只需单击 1 次错误。
【讨论】:
这是一个值得关注的好消息……过去也发生在我身上。但是,这一次并没有为我解决它......【参考方案17】:检查您的所有图像,看看它是否正确放置在资源中并正确命名和调整大小。
还要检查您允许的方向,并相应地将图像添加到资源中。
【讨论】:
-1 因为他指定iPad
而不是 4" 请在回答前阅读问题。【参考方案18】:
在 Xcode 5 中,确保添加应用目标中提到的所有需要的图像。
【讨论】:
【参考方案19】:从设备或模拟器中删除之前安装的应用程序,然后在清理后重新启动应用程序。
【讨论】:
从设备或模拟器中删除之前安装的应用程序,退出 xcode 和模拟器。重新开始并启动应用程序。【参考方案20】:再次尝试设置图像,确保初始屏幕的分辨率符合 iOS 7 指南
【讨论】:
以上是关于iPad上的黑屏而不是启动图像的主要内容,如果未能解决你的问题,请参考以下文章
Qt for Android 启动短暂的黑屏或白屏问题如何解决?