iPad上启动图像变成黑屏

37

我正在开发一款iPhone应用,适用于iOS 6.1和7(使用Xcode 5)。 我在iPad启动图像方面遇到了问题。

在iPad 7.0和7.0.2上,启动图像没有显示出来(在6.1中可以正常工作):当应用程序加载时,我得到黑屏。

尽管我设置了所有iPad和iPad Retina(横向和纵向)所需的启动图像,并且使用Asset Catalog,但我在iPhone 6.1和7.0.2上没有遇到此问题。

我漏掉了什么?


1
你在运行项目之前清理了吗?同时按下alt+shift+cmd+k来清理你的构建目录。 - rckoenes
完成了,但还是不起作用!:( - nicky_1525
你检查过项目中启动屏幕所使用的图片是否正确吗? - Marco Pace
删除项目中的所有启动图像,然后尝试重新添加它们。此外,您的项目中是否有Images.xcassets“文件夹”?就像这个问题中所述:https://dev59.com/8mMl5IYBdhLWcg3wBy_y - Yanchi
你说我正在使用Xcode 5为iOS 6.1和7开发iPhone应用程序。我在iPad启动图像方面遇到了问题。你是否已经添加了正确的图像?你是否已经正确地命名了它们?这里有一个尺寸链接https://developer.apple.com/library/ios/documentation/userexperience/conceptual/mobilehig/LaunchImages.html,这里有一个名称和尺寸链接https://developer.apple.com/library/ios/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/App-RelatedResources/App-RelatedResources.html#//apple_ref/doc/uid/TP40007072-CH6-SW12 - Popeye
显示剩余2条评论
20个回答

1
我在横屏模式下遇到了类似的问题,我的iOS 7启动图像没有显示,而iOS 6则可以。我的是iPhone Retina 3.5英寸启动图像。
由于我有另一个竖屏应用程序没有这个问题,所以我做了两件事:
  1. 在info.plist中,“Supported interface orientations”下,我也添加了两个竖屏模式,并将它们排在横屏模式之前,如下:

    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. 在视图控制器中实现了这个方法:

    -(NSUInteger)supportedInterfaceOrientations{
    return UIInterfaceOrientationMaskLandscape; 
    

    }

这可以在有或没有资源目录的情况下工作。


1

enter image description here

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

1
我假设您在使用资源目录时已确保正确添加了Images.xcassets的目标成员身份。我提到这一点是因为如果您有多个目标,看起来您需要手动添加它们(而且您没有提供任何截图,所以无法确定)。
现在,由于您并没有真正提供项目中Images.xcassets文件夹中“LaunchImage”概述的截图,我只能猜测可能的原因。从启动图像在iPhone(6.1和7.0.2)和iPad(6.1)上正常工作,但仅对iPad(7.0及以上版本)不起作用的事实来看,我认为您可以考虑一下iPad纵向和横向图像的尺寸是否适合iOS7。具体而言,您应该查看您的启动图像,而不是如附图所示的空矩形- iOS7 iPad Launch Images (portrait and landscape)- not correctly sized 这可能是因为您仍然拥有iOS7的iPad启动图像,但不包括状态栏区域。在iOS7之前,iPad启动图像是创建为不包括状态栏区域的,但在iOS7中,所有启动图像都必须包括状态栏区域。请查看苹果iOS7 UI转换指南中的“每个应用程序必须执行的操作”部分(https://developer.apple.com/library/ios/documentation/userexperience/conceptual/TransitionGuide/TransitionGuide.pdf)。下面的屏幕截图应该可以解释我在说什么-iPad launch images dimensions- iOS6 and iOS7 例如,您可以看到iPad横屏视网膜图像在iOS6.1及以前的尺寸为2048x1496(不包括状态栏的40像素),但是在iOS7.0及以上版本中,相同图像的尺寸预计为2048x1536(包括状态栏的40像素)。因此,如果您没有相应更改图像,您将在iPad 7.0及以上版本上看到黑屏的情况。在iPhone上,您不会遇到此问题,因为iPhone启动图像始终覆盖状态栏,无论是iOS6.0还是iOS7.0-因此,iPhone启动图像已经符合新的UI要求。

1

我找到了一份与我们的应用程序相匹配的答案(仅适用于iPhone,但可在iPad上使用):https://dev59.com/CWIk5IYBdhLWcg3wn_ZF#19448782

总结自该答案:

如何操作。前往资源目录。然后在右上角点击“属性检查器”图标。在这里,您可以为启动图像设置目标操作系统。取消iPhone的iOS 7复选框。现在,您应该能够看到这些设备的启动图像。


1

这是针对iOS 8的更新。

当我试图为我的iOS 8应用添加LaunchImage时,遇到了同样的问题。

自iOS 8起,苹果允许开发者使用一个名为LaunchScreen.xib的xib文件来呈现启动视图。我相信开发者可以使用LaunchImageLaunchScreen.xib中的任意一种。不幸的是,在LaunchScreen.xib出现后,我找不到任何关于如何处理LaunchImage的文档。每次我尝试将LaunchImage作为启动视图时,都会得到一个黑屏。

我的解决方案是:

  1. 不要考虑 LaunchImage。使用 LaunchScreen.xib。(你必须在资源目录中保留一个空的 LaunchImage,我相信这是个 bug。)

  2. 在 xib 上拖入一个 UIImageView 并将其设置为全屏。记得考虑尺寸类和约束条件。

  3. 将一张分辨率足够高以适应 iPhone 6 Plus 的图片设置给 UIImageView


0

0

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

还要检查您允许哪些方向,并相应地将图像添加到资源中。


-1 是因为他指定了 iPad 而不是 4 英寸,请在回答前阅读问题。 - Popeye

0

我也遇到了同样的问题。 我不得不采用一种变通方法:对于所有iOS版本都使用默认图像,并从info.plist中删除UILaunchImageFile键。

我无法为iOS 7和之前的版本使用不同的启动图像,因此我不得不使用相同的“艺术”图像,而不是模仿应用程序的第一个视图的图像(这是苹果推荐的,我也喜欢),但至少我不再遇到黑屏问题了。

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

警告:我仍在测试该应用程序,因此我不知道是否会有任何副作用。


0

我也遇到了类似的问题,但解决方案很简单(在我的情况下)。

我所做的就是按照以下步骤进行 -

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

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

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


0

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

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

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