游戏卡在iPhone Xs的安全区域内

时间:2018-11-17 04:21:57

标签: ios swift sprite-kit safearealayoutguide skview

我更新了游戏,认为可以支持iPhone Xs和11英寸iPad,它非常适合模拟器上的屏幕(非常令人沮丧),但不适用于物理设备上的测试。看来rootView(我的SKView)仅限于安全区域插图。就像这张图片一样,游戏场景受到约束。

enter image description here

我在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和iPhone,除11英寸外,someSpecifiedSize将为(667,375),对于所有iPad,将为(667,500)。可能很奇怪,但是由于我的游戏性质,它一定是这样。

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

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

1 个答案:

答案 0 :(得分:1)

此代码实际上可以按您希望的方式工作:

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”,我不能说出它到底是什么,但是我认为它尊重安全区域。