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

Posted

技术标签:

【中文标题】SpriteKit 应用程序仅在任务切换器中显示灰色/白色边框【英文标题】:SpriteKit app shows grey/white border in task switcher only 【发布时间】:2021-09-16 19:11:03 【问题描述】:

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

    文件 新项目 iOS、游戏 语言:Swift,游戏技术:SpriteKit

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

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

我也尝试过像这样将Main.storyboard中“视图”的“背景”属性更改为黑色,这对任务切换器的外观没有影响:

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

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

【问题讨论】:

【参考方案1】:

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

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

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

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

【讨论】:

谢谢,我试过了。将Info.plist 中的 UIUserInterfaceStyle 设置为字符串“Dark”(加上在手机中手动设置暗模式)没有帮助。另外,在我的AppDelegate(有一个成员var window: UIWindow?)中,我将window!.backgroundColor = .black(强制展开以确保它确实做了一些事情,并且不会被忽略)放入func application(...) 正文中,但这并没有帮助要么。 哇,这是一个非常奇怪的问题,通常它为我解决了这样的问题,我想知道它是否与作为精灵套件应用程序有什么独特之处?【参考方案2】:

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

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

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

【讨论】:

以上是关于SpriteKit 应用程序仅在任务切换器中显示灰色/白色边框的主要内容,如果未能解决你的问题,请参考以下文章

SpriteKit 目标 c 节点仅在 x 轴上移动

如何仅在 vue.js 中对特定点击的卡片应用切换/样式?

Spritekit 动画加载时间

如何在任务切换器中显示锁定屏幕并正确恢复

在 SpriteKit Swift 2 中切换场景

从停靠栏隐藏应用程序图标,但在任务切换器中保留图标?