在iPad上使用黑屏而不是启动图像

时间:2013-10-07 07:36:11

标签: iphone ios objective-c xcode ipad

我正在开发适用于iOS 6.1和7的iPhone应用程序(使用Xcode 5)。我对iPad发布图像有疑问。

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

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

我错过了什么?

20 个答案:

答案 0 :(得分:33)

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

我没有遇到这个问题,因为iPhone在所有iOS版本中运行良好。

解决方案:是要更新到资产目录以管理应用的图片,并仅定位到iOS 6和Prior。

步骤:

第1步:

Update to Asset Catalog

第2步:

Select to Migrate

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

Uncheck the iOS 7 check boxes for iPhone

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

答案 1 :(得分:24)

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

我的应用仅限风景,仅限iOs7,ipad \ iphone(XCode 5)。

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

解决方案:转到Images.xcassets - 启动图像 - 选择它。取消选中所有“iOs7及更高版本”框。检查“iOs6 and prior”框并用图像填充空白区域。

奇怪,但有效。

答案 2 :(得分:11)

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

技术Q& A QA1780 为什么我的应用会在iPad上启动黑屏?

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

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

...

在Xcode中

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

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

查找名为主故事板文件基本名称(iPad)或UIMainStoryboardFile~ipad的键。如果存在此密钥,请将其删除。您还应该删除后缀为(iPad)或~ipad的任何其他密钥。

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

答案 3 :(得分:9)

我请求Apple支持,结果证明这是一个错误。他们让我报告,我做了。这是报告编号:15340531。 现在取决于他们。

答案 4 :(得分:5)

使用LaunchScreen.storyboard

我遇到了类似的问题,直到我在常规项目设置中找到以下设置。

  1. 主界面设置为主故事板文件。我叫Main.storyboard
  2. enter image description here

    1. 启动屏幕文件设置为启动屏幕故事板文件。我叫LaunchScreen.storyboard。 (这是我原本无视的。)
    2. enter image description here

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

答案 5 :(得分:4)

尝试再次设置图像,确保启动画面的分辨率符合iOS 7指南

答案 6 :(得分:3)

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

答案 7 :(得分:3)

在尝试了几个解决方案之后,我怀疑iPhone试图以横向方向启动,因此没有找到任何相应的启动图像。事实上,模拟器是从景观开始的,原因是我不理解。

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

答案 8 :(得分:2)

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

答案 9 :(得分:2)

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

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

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

答案 10 :(得分:1)

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

总结答案:

  

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

答案 11 :(得分:1)

这是iOS 8的更新。

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

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

我的解决方案是:

  1. 不要考虑LaunchImage。使用LaunchScreen.xib。 (您必须在资产目录中保留一个空LaunchImage。我相信这是一个错误。)

  2. UIImageView拖到xib并使UIImageView全屏显示。 请记住考虑大小类和约束。

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

答案 12 :(得分:1)

我在横向上遇到了类似的问题,iOS 6的iOS 7启动图像没有显示。我是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; 
    

    }

  3. 无论有没有资产目录,都可以使用。

答案 13 :(得分: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 Launch Images (portrait and landscape)- not correctly sized

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

下面的截图应该解释我在说什么 - iPad launch images dimensions- iOS6 and iOS7

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

答案 14 :(得分:1)

enter image description here

在Xcode 5中,请确保添加应用目标中提到的所有必需图片。

答案 15 :(得分:0)

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

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

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

警告:我仍在测试应用程序,因此我不知道是否会出现一些副作用。

答案 16 :(得分:0)

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

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

答案 17 :(得分:0)

我也面临类似的问题,但解决方案很简单(就我而言)。

我所做的只是关注-

1。添加一个新文件(如果尚未添加)Launchscreen.storyboard

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

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

答案 18 :(得分:0)

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

从下面的URL获取解决方案。

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

答案 19 :(得分:0)

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

override func loadView() {
    super.loadView()
}