我更新了游戏,认为可以支持iPhone Xs和11英寸iPad,它非常适合模拟器上的屏幕(非常令人沮丧),但不适用于物理设备上的测试。看来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和iPhone,除11英寸外,someSpecifiedSize将为(667,375),对于所有iPad,将为(667,500)。可能很奇怪,但是由于我的游戏性质,它一定是这样。
let scene = SKScene(size: someSpecifiedSize)
scene.scaleMode = .aspectFill
我不明白为什么视图包含安全区域,因为在定义其大小时没有使用插图。如何使SKView成为设备屏幕的大小,而不是safeArea的大小?
答案 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”,我不能说出它到底是什么,但是我认为它尊重安全区域。