iOS 9 xCode 7 构建的应用程序显示黑色矩形而不是初始屏幕
Posted
技术标签:
【中文标题】iOS 9 xCode 7 构建的应用程序显示黑色矩形而不是初始屏幕【英文标题】:iOS 9 xCode 7 built app displays black rectangle instead of splash screen 【发布时间】:2015-10-07 11:57:26 【问题描述】:我知道这个问题可能看起来像是一些现有问题的重复,但事实并非如此。
我正在努力解决通用(iPad/iPhone)应用程序不再显示启动画面的问题。
在升级到 ios 9 和 Xcode 7 之前,不存在此类问题。升级后,启动画面没有任何变化。
与问题相关的技术数据:
支持的设备是 iPad(仅限横向)和 iPhone (人像/风景) 我使用“Launch Screen.xib”,它有一个 UIImageView 大小类和 设置约束,使其始终全屏。 我已在图像资源中添加了所有初始屏幕图像(iPad 除外 肖像的) 我使用 Xcode 版本 7.0.1 (7A1001) 和 iOS 9.0.2 iPad 上不会出现此问题错误的启动画面在 iPhone 5s 上如下所示:
这是在纵向模式下制作的,所以这个“黑色方块”的顶部和底部都有白色方块。
昨天我一直在努力解决这个问题,但我设法通过将启动屏幕重命名为“LaunchScreen.xib”(没有空格)来解决它。但是今天早上问题又出现了。
我尝试过的事情:
删除和创建 LaunchScreen.xib 再次使用和不使用空格 创建 LaunchScreen.storyboard 文件而不是 xib 添加在 LaunchScreen.xib 中使用的 @2x 和 @3x 版本的图像 删除/添加/替换图片资源中的图片 清理、构建清理甚至删除派生数据 重启设备、重新安装应用、不构建就重新启动以及我能想到的许多其他解决方案。没有任何帮助,所以也许有人已经解决了类似的问题并且可以引导我走向正确的方向。
编辑 1
所以我将我使用的 LaunchScreen.xib 图像从“Default.png”重命名为“DefaultSplash.png”。这立即解决了 iPhone 上的所有问题。但现在我遇到了一个新问题 - iPad 闪屏现在是黑色。如果我将 LaunchScreen 图像设置为项目中使用的其他图像,Ipad 将其显示为启动画面而没有任何问题,但 Default.png 和 DefaultSplash.png 现在都不能在 ipad 上使用。这真是个奇怪的问题。
【问题讨论】:
您可以尝试为临时构建构建存档并导出切片变体。 (导出向导中的“导出特定设备”选项)。这有助于查看输出中是否缺少任何资源... @MartinUllrich 这是解决这个问题的一种非常有趣的方法。我一定会在几分钟内尝试一下。 我还会尝试界面构建器实用程序面板中的“用作启动屏幕”选项(文件检查器>界面构建器文档>在“使用大小类”的正下方。也许还可以将其关闭和打开再次.. 【参考方案1】:在我的情况下,“Launch Screen.xib”中的图像没有显示。我不得不重命名它们并重置 nib 文件中的新名称以使其正常工作。
【讨论】:
关于为什么 xib 会忽略某些图像的任何想法? 只是因为它是由较旧的 xcode 版本处理的。没有解释,但这是一个错误。【参考方案2】:所以我这样解决了这个问题:
自从我重命名文件 LaunchScreen.xib
后,它修复了 iPhone 上的一个问题,但在 iPad 上引起了类似问题。从那时起,我不能为同一个 xib 使用相同的图像文件名(即,如果图像“Default.png”失败,它就不能再使用了......错误?)。所以我创建了两个文件,LaunchScreen.xib
和 LaunchScreen~iphone.xib
,每个文件都有单独的图像文件。现在可以正常使用了。
看起来丑陋且有问题,但它确实有效。
【讨论】:
【参考方案3】:从 iOS 9 开始,Xcode7 发生了变化。他们已经修改了 Launchscreen(我们会得到黑屏)。如果您更改部署目标,则意味着您可以看到之前的启动屏幕。只有空的视图控制器存在,所以我们对其进行了更改。 根据资产要求,在 imagecassets 中添加图片。
【讨论】:
正如我原来的问题中提到的,我确实在 Image Assets 文件夹中添加了所有可能的图像并分配了它们。还是您说的是其他解决方案? yes 从 Images.xcassets 中删除启动屏幕资源,并尝试创建新资源并根据要求添加图像。 好吧,我尝试删除我的启动屏幕图像资产并重新创建所有内容。不幸的是,这并没有解决我的问题。【参考方案4】:这听起来可能很愚蠢,但可能会发生与这种情况相关的事情:
如果您钩住任何插座,然后通过更改自定义类来破坏它,您将在没有任何警告的情况下获得这种黑屏行为,而不是任何非启动故事板/场景的典型崩溃,这将导致应用程序之前出现黑屏开始。
【讨论】:
以上是关于iOS 9 xCode 7 构建的应用程序显示黑色矩形而不是初始屏幕的主要内容,如果未能解决你的问题,请参考以下文章
iOS 9 Xcode 7 - 应用程序在顶部和底部出现黑条