SpriteKit 应用程序仅在任务切换器中显示灰色/白色边框

问题描述

我正在使用 Xcode 12.5.1 并使用 SpriteKit 创建一个新的 iOS 游戏项目:

  1. 文件
  2. 新项目
  3. iOS、游戏
  4. 语言:Swift,游戏技术:SpriteKit

在没有任何修改的 iOS 模拟器(例如“iPhone 12 mini”)上运行它会导致这个屏幕:

Screenshot of default SpriteKit app on iOS simulator (running)

这看起来不错,场景周围有黑色边框。但是,当我从底部滑动进入任务切换器时,黑色边框突然变成了灰白色边框:

Screenshot of default SpriteKit app on iOS simulator (in task switcher)

我还尝试将 Main.storyboard 中“View”的“Background”属性更改为黑色,这对任务切换器的外观没有影响:

Screenshot of Xcode with the background of the "View" in Main.storyboard set to "Black"

这应该很容易重现,只需创建认的 SpriteKit 示例应用程序,在真实手机或模拟器上运行它并进入任务切换器视图。

我希望任务切换器中的应用程序背景在任务切换器视图中为黑色,就像应用程序运行时一样。请注意,我正在创建的应用程序对于我正在使用的 SKSpriteNode 具有固定的纵横比,因此解决方案不应涉及为场景设置不同的大小。基本上它应该适用于任何纵横比和信箱我的 SKSpriteNode 视图中的应用视图和应用程序切换器视图中的黑色信箱。

解决方法

游戏应用模板似乎缺少 LaunchScreen 情节提要,这可能会导致 iOS 回退并在某些情况下以不正确的大小呈现预览。要添加一个,您可以执行以下操作

  1. 从菜单栏中选择文件 > 新建 > 文件 (⌘N) 并选择 Storyboard。
  2. 将新故事板命名为“LaunchScreen.storyboard”。
  3. 通过选择打开您新创建的 LaunchScreen.storyboard 文件 来自项目导航器 (⌘1)。
  4. 从 Storyboard 文档大纲中选择 View Controller,并确保在 Attributes Inspector (⌥⌘5) 中选择了“Is Initial View Controller”。 (See Image)
  5. 从项目导航器 (⌘1) 中选择您的 Info.plist
  6. 向您的 Info.plist (↵) 添加一个名为“Launch screen interface file base name”的新键,并将值设置为“LaunchScreen”。

这应该可以解决问题,但是您可能需要稍微更新游戏场景以解决纵横比的变化。

,

如果我不得不猜测,它看起来可能是由于暗/亮模式。如果应用在 window 类中使用 AppDelegate,请尝试将其背景设置为 .black

或者您可以指定您的应用仅在黑暗模式下运行(仅当您的应用适用于 iOS 13+ 时才这样做)。你可以通过将它添加到你的 plist 文件中来做到这一点:

<key>UIUserInterfaceStyle</key>
<string>Dark</string>

另外,如果您有物理设备,请尝试更改明暗模式以查看是否会导致问题