首页 > 解决方案 > 游戏卡在安全区域 iPhone Xs

问题描述

我更新了我的游戏,我认为它会支持 iPhone Xs 和 iPad 11 英寸,它完全适合模拟器上的屏幕(非常令人沮丧),但在物理设备上测试时却不行。似乎 rootView(我的 SKView)被限制在安全区域插图中。游戏场景就像这张图片一样受到限制。

在此处输入图像描述

我在 UIViewController 类中使用此方法将根视图制作为具有设备屏幕大小的 SKView。

override open func loadView() {

    view = SKView(frame: UIScreen.main.bounds)

}

然后创建一个与 SKView 具有相同纵横比(但大小不同)的场景,并让它缩放以适应 SKView 内部。例如,对于 iPhone X/Xs/XsMax/Xr,someSpecifiedSize 将为 (812,375),对于 iPhone 5、6、7、8 和 (667,500),对于除 11 英寸之外的所有 iPad。这可能很奇怪,但由于我的游戏性质,它必须是这样的。

let scene = SKScene(size: someSpecifiedSize)
scene.scaleMode = .aspectFill

我不明白为什么视图包含安全区域,因为我在定义其大小时没有使用插图。如何使 SKView 成为设备屏幕的大小而不是 safeArea 的大小?

标签: iosswiftsprite-kitsafearealayoutguideskview

解决方案


此代码实际上可以按您的意愿工作:

self.view = SKView(frame: view.bounds)
    let scene = SKScene(size: view.bounds.size)
    let skView = view as! SKView
    skView.showsFPS = true
    skView.showsNodeCount = true
    skView.ignoresSiblingOrder = true
    scene.scaleMode = .resizeFill
    scene.backgroundColor = .green
    skView.presentScene(scene)

您的问题似乎是可变的“someSpecifiedSize”,我无法判断它实际上是什么,但我想它尊重安全区域。


推荐阅读