启动界面在使用Xcode 12的iOS 14上无法工作。

55
我升级了Xcode到12版本,并在iOS 14上测试了我的应用程序。现在的问题是,我的启动画面只显示为黑色。我在一个iOS 13.5设备上进行了测试,结果如预期。我尝试删除launchscreen.storyboard方法,并在info.plist中添加Launch Screen键,但图像会被缩放到全屏大小。
现在我对launchscreen.storyboard进行了一些测试,发现了一些问题。
- 如果我删除图像视图,启动画面会按预期显示。我只添加了一个标签,这样就可以正常工作。 - 如果我在图像视图中使用系统提供的图像,也能正常工作。但如果使用项目中的图像,则无法正常工作。
你是否遇到了iOS 14和storyboard方法的问题?
如果是的话,你是如何解决的?

1
之前遇到了类似的问题,将启动图片从LaunchImage.jpg重命名为SplashImage.jpg解决了这个问题,至少目前是这样。 - Shaz
1
我们也遇到了同样的问题。但是在 iOS 14 上,使用 iOS 13 SDK 进行构建时,我们的构建也会出现这个问题。 - förschter
23个回答

45

一个对我有效的解决方法:

由于某种奇怪的原因,如果我缩小图像的尺寸,它就可以正常工作。我有一个完整尺寸为2732x2732的图片,但它无法正常工作。将同一张图片的大小降低到2400x2400,就可以正常工作了。我尝试了2500x2500和2600x2600,但都不行。

最重要的是,每次更改图片后,我都必须重新启动模拟器才能反映出更新后的图片。

它在真实设备上还没有运行。与模拟器一样,我必须重启设备,然后才能正常工作。

不确定问题是与图像的尺寸/大小有关还是与重启有关。

进一步更新:

我将具有较小图片的相同构建版本上传到TestFlight,并在我的设备上安装它(基本上是从先前具有大尺寸图片的版本进行更新),但不幸的是问题仍然存在:(

现在我所做的是卸载应用程序并再次从TestFlight安装它。问题仍然存在。

最后我不得不删除应用程序重启设备重新安装应用程序,这时它才可以正常工作。


1
谢谢!删除应用程序,重新启动设备,然后再次安装应用程序!这对我也起作用了。 - Lasantha Basnayake
3
我发现将维度降至2400并不足够。将文件大小缩小到1 MB以下对我有所帮助。 - IowaEric
4
有趣,一个大小为60KB、分辨率为2732x2732的PNG文件无法工作,将其缩小至2400x2400后问题得以解决! - timbru31
1
重启设备有帮助。 - saltwat5r
1
是的,“图像名称”字段的更改似乎需要删除应用程序并重新启动模拟器。 - Megan Spencer
显示剩余3条评论

23

这里有很多好的想法,但我最终能够解决问题 - 它更像是一个解决方法。我需要将图片存储在Images.xcassets文件夹之外,然后它又开始工作了。这是一个非常奇怪的问题。


3
这对我很有用。不过这个解决方案的缺点是不能再为深色模式和浅色模式设置不同的图片了(我的应用程序标志在浅色和深色背景下略有不同的颜色调)。 - domi852
一个小备注。我把那些图片移到了 Assets.xcassets 文件夹之外。然后我的启动屏幕又开始正常工作了! - RunesReader
运行得非常顺畅 :) - Sid Singh
你能提供一下你在资源之外添加的尺寸和名称吗? - Dimple
太好了,这对我起作用了。我只是删除了资源中的图像,并将图像保留在资源之外。 - vamsikrishnaChowdary

19
一个解决方法是在启动故事板中使用带有图像的按钮而不是imageview。它非常有效!

2
天啊!我在这个页面上尝试了所有的方法,但都没有用。感谢Rayan的分享! - Saamer
我的11→14.5应用程序(monotouch xamarin)唯一有效的解决方案。真是个大HACK! - Vlad Servitola
真的管用!!!我尝试了很多解决方案,但只有这个有效!太棒了! - phuongzzz
奇怪。这就是答案!谢谢! - jonchoi
有没有截图?我尝试了所有方法,但什么都没用。有图片和按钮,但我没看到任何按钮和图片。XCode 版本是14.1。 - greenridinghood

12

可能的原因之一是图像大小。根据苹果的人机界面指南,iOS 14启动屏幕的图像限制为25 MB

一个2400x2400像素的图像将会占用大约22 MB 的内存空间。当我们把宽高均为2500像素时,就达到了25 MB的上限。

我们曾经遇到过类似的问题,在像iPhone 12这样的@3x设备上,LaunchScreen.storyboard中的全屏图像全部变成黑色。将仅针对 @3x 的启动图像大小从3072x3072减小到2400x2400就解决了这个问题。

正方形图片可以轻松支持横向和纵向方向。但也应该支持每个方向使用不同的图片,其中一个方向的图片总大小应小于25 MB。


在iOS 14中肯定存在一个bug,它会拉伸你的位图以适应屏幕。我看不到任何解决方法。 - RPSM
这个解决方案适用于使用LaunchScreen.storyboards的情况,其中您可以使用UIImageView来显示图像。在那里,您可以指定缩放行为。但是很好的提示,我会将其添加到帖子中。 - Thorsten Stark
从苹果的文档中得知,不要使用静态图像作为启动屏幕。在iOS 14及更高版本中,启动屏幕的大小限制为25 MB。请参考以下链接:https://developer.apple.com/documentation/uikit/app_and_environment/responding_to_the_launch_of_your_app - ZYiOS
我使用的是一个只有这个大小一小部分的.png图像,但仍然存在问题(Xcode 14.3)。我猜测图像被转换为位图进行呈现。一个3200x2000的图像太大了,3000x1875可以工作。因此,似乎限制在5,625,000像素<= limit <6,400,000像素之间。 - Benzy Neez

7

我遇到了同样的问题。问题出在启动屏幕故事板中使用的 .png 图像上。这导致整个启动屏幕都是黑色的。

在我们的情况下,解决方法如下:

  • 选择一个较小的图像
  • 从设备/模拟器中删除应用程序
  • 重新启动设备/模拟器

我发现通过将应用程序中的该图像替换为另一个图像,可以定位到此图像是错误的根源。不需要重新启动或其他操作,立即就可以使用另一张图像 (不存在此问题)。


5

对我唯一有效的解决方法是将图像添加到 Images.xcassets 文件夹之外。 进行修改并重建应用程序后,它可以正常工作。

在 iOS 14 或 XCode 12 上可能会出现某些问题。


它在我的iOS 15.5和Xcode 13.3上运行 ✅ - xgqfrms

4
我遇到了这个问题,当使用LaunchScreen.storyboard并在Assets.xcassets上使用图像时,在iOS 14上与Xcode 12无法正常工作。我通过尝试更改3x图像2436×1125并设置2x图像828×1792来解决它。最后,我不得不删除应用程序,重新启动设备并再次安装应用程序。这时它就可以正常工作了。

2
以下是一些关于你的第一篇帖子的建议: 1)确保你的回答看起来像一个回答。以“我也遇到了同样的问题”这样的短语开头并不像一个回答。尝试更加自信地表达,例如:“当我遇到这个问题时...我通过...解决了它。” 2)不要在评论中添加你的答案。相反,应该编辑你的答案。 - David Buck
@DavidBuck 这对我非常有帮助。 非常感谢你。 - qing shao
似乎只有iPhone重启对我有帮助。 - djdance

3

我也遇到过这个问题,非常恼人。我的启动屏幕只是一个背景图片(2048x2048 PNG)和中间的图形(2048x2048 PNG)。

对我来说解决方法是使用更小的中间图形(720x720 PNG),从任何资源目录中删除图片,并将它们添加到项目中。

在模拟器上,图像直到重新启动后才显示出来。当构建并安装到我的iPhone时,我不需要重新启动它也能正常显示。


仿真器(Xcode 12.3)似乎需要重新启动才能注意到不同的启动背景颜色或图像。关闭仿真器设备窗口就足够了。 - Mark Knopper

3
在我的情况下,“Is Initial View Controller”这个属性没有被勾选。另外,请确保将视图的颜色设置为实际颜色而不是系统颜色,否则可能会在设备主题设置上遇到问题,也就是说,如果你喜欢显示特定的颜色。
此外,要访问该设置,请确保单击下拉面板中的实际“View Controller”对象。 XcodeImage

2
我唯一成功的方法是:
  1. 删除现有的LaunchScreen.storyboard并创建一个新的
  2. 勾选“用作启动画面”

Use as Launch Screen

  1. 勾选“是初始视图控制器”

Initial View Controller

  1. 确保你使用的图片不在Assets.xcassets文件夹下。我把我的图片放在项目的根目录下
  2. 删除应用程序,重新启动模拟器,然后运行应用程序

完成!!!


谢谢 - 只是想补充一下,“是否为初始视图控制器”也被选中了,这是您想要在启动屏幕后加载的视图控制器。 - heLL0

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