我更新了我的游戏,我认为它可以支持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),对于iPhones 5,6,7,8为(667,375),对于除11英寸以外的所有iPads为(667,500)。这可能有点奇怪,但由于我的游戏性质,它一定是这样的。
let scene = SKScene(size: someSpecifiedSize)
scene.scaleMode = .aspectFill我不明白为什么视图包含安全区域,因为我在定义它的大小时没有使用insets。如何将SKView设置为设备屏幕的大小,而不是safeArea的大小?
发布于 2018-11-17 17:02:58
这段代码实际上如您所愿地工作:
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“,我不知道它实际上是什么,但我猜它尊重安全区域。
https://stackoverflow.com/questions/53348188
复制相似问题