ios - 游戏卡在安全区域 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 的大小?
解决方案
此代码实际上可以按您的意愿工作:
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”,我无法判断它实际上是什么,但我想它尊重安全区域。
推荐阅读
- javascript - 请解释为什么点符号在这种情况下不起作用
- hyperledger-fabric - 为什么客户端广播一个背书的交易而不是同行自己做呢?
- python - 一次将多个'driver.find_elements_by_xpath'作为.text - Selenium - Python
- python - AWS Lambda Alpine Python Container 显示 IMAGE Launch 错误 exec 格式错误
- python - Python 股票购买指标 // 一次只持有 1 个头寸
- python - 使用 Zarr 存储 Dask 数组会消耗太多内存
- javascript - 在 discord.js 中处理向用户发送 DM 的错误
- python - 3 个值在循环中匹配 31 - Python
- c++ - 如何要求模板参数成为特定模板类的特化?
- java - 是否可以将 Quarkus 2.0 hibernate orm 扩展与标准 JPA 和 jakarta.persistence 包一起使用?