我正在开发一款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上没有遇到此问题。
我漏掉了什么?
我正在开发一款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上没有遇到此问题。
我漏掉了什么?
在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)
在视图控制器中实现了这个方法:
-(NSUInteger)supportedInterfaceOrientations{
return UIInterfaceOrientationMaskLandscape;
}
这可以在有或没有资源目录的情况下工作。
我找到了一份与我们的应用程序相匹配的答案(仅适用于iPhone,但可在iPad上使用):https://dev59.com/CWIk5IYBdhLWcg3wn_ZF#19448782
总结自该答案:
如何操作。前往资源目录。然后在右上角点击“属性检查器”图标。在这里,您可以为启动图像设置目标操作系统。取消iPhone的iOS 7复选框。现在,您应该能够看到这些设备的启动图像。
这是针对iOS 8的更新。
当我试图为我的iOS 8应用添加LaunchImage
时,遇到了同样的问题。
自iOS 8起,苹果允许开发者使用一个名为LaunchScreen.xib
的xib文件来呈现启动视图。我相信开发者可以使用LaunchImage
或LaunchScreen.xib
中的任意一种。不幸的是,在LaunchScreen.xib
出现后,我找不到任何关于如何处理LaunchImage
的文档。每次我尝试将LaunchImage
作为启动视图时,都会得到一个黑屏。
我的解决方案是:
不要考虑 LaunchImage
。使用 LaunchScreen.xib
。(你必须在资源目录中保留一个空的 LaunchImage
,我相信这是个 bug。)
在 xib 上拖入一个 UIImageView
并将其设置为全屏。记得考虑尺寸类和约束条件。
将一张分辨率足够高以适应 iPhone 6 Plus 的图片设置给 UIImageView
。
检查您的所有图像,确保它们已正确放置在资源中,并已命名和调整大小。
还要检查您允许哪些方向,并相应地将图像添加到资源中。
iPad
而不是 4 英寸,请在回答前阅读问题。 - Popeye我也遇到了同样的问题。 我不得不采用一种变通方法:对于所有iOS版本都使用默认图像,并从info.plist中删除UILaunchImageFile键。
我无法为iOS 7和之前的版本使用不同的启动图像,因此我不得不使用相同的“艺术”图像,而不是模仿应用程序的第一个视图的图像(这是苹果推荐的,我也喜欢),但至少我不再遇到黑屏问题了。
看起来在iOS 7中,允许为iOS 7和之前版本使用不同的启动图像的UILaunchImageFile键在Retina iPad上无法正常工作。
警告:我仍在测试该应用程序,因此我不知道是否会有任何副作用。
我也遇到了类似的问题,但解决方案很简单(在我的情况下)。
我所做的就是按照以下步骤进行 -
1.添加一个新文件(如果您尚未添加它)Launchscreen.storyboard
2.获取一个UIViewController
,将其标记为Is Initial View Controller
,然后在其中添加一个UIImageView
,并设置您想要在应用程序启动期间显示的图片。确保您给这个UIImageView
必需的约束。
3.转到项目->常规->应用程序图标和启动图像,并选择Launchscreen.storyboard作为启动屏幕文件(会有一个下拉菜单)。
我只是忘记在我的视图控制器中调用 super.loadView() ...
override func loadView() {
super.loadView()
}