iOS 9 Xcode 7 - 应用程序在顶部和底部出现黑色条纹

125

我在iPhone 6 iOS9上安装了这个应用程序,发现顶部和底部有黑色的条纹。在iOS8上运行得很好。请问我该如何修复它?

我已经尝试使用Xcode 6.4和7来编译,但结果相同。

(iPhone 5曾经可以运行像这样的iPhone 4应用程序)

在此输入图片描述


我在iPhone 6上升级到iOS 9后遇到了同样的问题。 - aledalgrande
你的应用程序中使用导航栏或选项卡控制器吗? - Ing. Ron
@RonWood 两者都是。 - Mojtaba
您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - aledalgrande
快速修复:在项目/目标/"应用程序图标和启动图像"下,选择“AppIcon”(即使用ASSET CATALOG)作为应用程序图标源,然后删除所有Default-568h@2x.png样式的启动屏幕文件。清理、构建,应该可以在每个设备上全屏显示。 - bobobobo
17个回答

202

你是否从早期版本的Xcode迁移了你的应用?如果是,那么Xcode现在会就你的屏幕大小进行假设,你需要一种方法在运行时指示实际的屏幕大小。

有两种方式:

a) 如果你使用了启动屏幕。

你缺少一个LaunchScreen.storyboard文件。 从New File...对话框中创建一个Launch Screen对象。

launch screen creation

b) 如果你没有使用启动屏幕。

进入你的目标设置,选择General,然后选择App Icons and Launch Images。 现在将“Launch Screen File”设置为你的“main.storyboard”(或其他适当的storyboard)。


1
LaunchScreen.storyboard的内容应该是什么?我收到一个错误,说OSX的storyboards不支持目标设备“iPhone”。 - adamF
4
不需要LaunchScreen文件,另一种选择是为每个支持的屏幕大小提供所需的启动图像。 - rmaddy
我在iOS 9.1中打开应用程序时遇到了相同的问题,但是通过为所有分辨率添加启动屏幕图像来解决了我的问题,感谢@rmaddy。 - g212gs
6
在我的情况下,如果您没有Launch.screen.storyboard文件,则需要将“启动屏幕文件”更改为MainStoryBoard以使其正常工作。 - Evan Lin
@Sausage 我们的应用程序正在缩放模式下运行(没有启动屏幕,没有启动图像,没有约束,只有默认的-568h@2x)。那么我们如何支持iPhone X? - Tejas Ardeshna
这对我有用,但不完全如上所述。我在Xcode 13 beta中启动了我的应用程序,但需要转移到Xcode 12以便提交它。它所做的是取消选择设备方向并删除启动屏幕文件。因此,尽管我有一个启动屏幕,但它没有连接。 - Lucas Dahl

31

2
这对我很有效,似乎比将随意的新故事板添加到您的项目中要好得多。 - Jeremy
1
如果项目是Parse IOS Swift入门项目,请转到Target->General->App Icons and Launch Images,检查“Launch Screen File”下拉框的值是否为空。选择“Main.storyboard”将解决“顶部和底部出现黑色条纹”的问题。 - sfbayman
如果您需要为启动图提供自定义视图或者您的启动图与故事板初始视图控制器不同,则此解决方案将无法使用。 - Himanshu Mahajan

17

对我来说,问题是我正在将我的应用程序从之前的Xcode版本迁移,但该项目缺少LaunchScreen.storyboard文件。 我刚刚创建了LaunchScreen.storyboard并将其添加到启动屏幕文件中。 这样就解决了问题。 顶部和底部有黑色条纹的应用程序解决方案


6

如果您完全不使用Storyboard,会出现这种情况。

当您从“应用程序图标和启动图像”中的“启动屏幕文件”中删除LaunchScreen时,就会发生这种情况。 enter image description here

与其从此处删除它,不如进入info.plist并查找Launch screen interface file base name,然后删除LaunchScreen,也就是留空。 enter image description here

如果您已经从 Launch Screen File 中删除了LaunchScreen,则在info.plist中不会显示它。然后,您可以在 Launch Screen File 中给它任何名称,它将出现并且您可以删除该名称。


非常好的补充答案,谢谢。 - WickedW

6
我正在使用 Xcode 7.2。一开始,我创建了一个 LaunchScreen.storyboard 文件,如 Potassium Permanganate 建议的那样,它起作用了!然而,我不想要一个启动屏幕,所以我尝试将 Main.storyboard 设置为启动屏幕文件,这样就解决了问题!

xcode 7.2


2

当您将应用程序从早期版本的xCode迁移到xCode 6或xCode 7时,您将面临此问题。

对于iOS 7及更早版本,开发人员需要为其应用程序支持的所有屏幕大小、分辨率和方向提供单独的启动图像。

在Xcode 6或更高版本中,有另一种选择。您可以指定一个故事板,其初始视图控制器将用作应用程序的启动屏幕。请按以下步骤操作:

  • 创建一个名为LaunchScreen.storyboard的空白故事板文件。

  • 进入目标设置,在“常规”选项卡上,在“应用程序图标和启动图像”部分中选择故事板作为您的启动屏幕文件。 Xcode将向您的应用程序的Info.plist添加相应的UILaunchStoryboardName键。当存在此键时,Xcode将优先考虑它,而不是您可能设置的任何启动图像。

  • 向新创建的故事板视图添加一些子视图,并使用约束将它们定位。当您在设备上启动应用程序时,操作系统应将该场景用作启动屏幕。

从模拟器中删除旧的应用程序并清理项目。

干杯 :-)


2

我的应用程序出现了同样的问题。在我的应用程序中,我添加了多个目标。如果我使用启动画面解决方案,那么我可以看到全屏幕,但在我的情况下,我的启动画面在iPhone 4上看起来模糊和拉伸。为了解决这个问题,我使用了LaunchImage资源解决方案。尽管如此,我仍然面临着相同的问题。我已经尝试了以上所有解决方案,最终发现我的PNG图像没有包括 ALPHA 分辨率。添加新图像后,我可以看到全屏幕图像。


2
iOS改变了系统检测iPhone分辨率的方式。以前,您需要提供一些命名为“Default-568@2x.png”、“Default-667h@3x.png”等的png图像。现在您不再需要这样做了。您需要删除那些“Default-568@2x.png”样式的文件,并开始使用项目中的适当的LAUNCH SCREEN对象。
要添加启动屏幕,只需转到“新建文件...”对话框(文件/新建/文件,或按Cmd+N)。

launch screen creation

双击新的启动屏文件进行编辑。确保在其属性中选中了“用作启动屏幕”。最后,在项目属性/目标/"应用程序图标和启动图像"下选择您的LaunchScreen.storyboard文件。

select your launch screen


1
在我的情况下,我在项目中有几个目标,每个目标都有自己的启动屏幕图像。奇怪的是,其中一个目标看起来很好,但其他目标却有黑色条纹。问题出在assets文件夹内的Launch文件夹的名称上。将名称更改为LaunchImage可以解决问题。

1
前往资源目录并创建一个新的iOS启动图像。然后在 Target>General>App Icons and Launch Images>Launch Image Source 中,您将自动看到在资源目录中创建的新启动图像。

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