将我的应用程序(其中包含SpriteKit场景)转换为iOS 10时,我必须转换场景的原始相机位置:
cameraNode.position = CGPoint(x: self.size.width/2, y: self.size.height/2)
使用以下内容来解释iOS10:
if #available(iOS 10, *) {
cameraNode.position = CGPoint(x: self.size.width/2, y: (self.size.height + voidSize)/2)
}
else {
cameraNode.position = CGPoint(x: self.size.width/2, y: self.size.height/2)
}
iOS10版本实际上更有意义,因为我在屏幕外拥有部分场景(在向用户显示'之前首先创建精灵)和' voidSize'代表这一点。因此,必须为屏幕外部分添加偏移量才有意义。
问题是,iOS 10中的SpriteKit有什么变化让我纠正了我之前没有的相机位置?
该应用程序现在在iOS 9和iOS 10上运行良好 - 只是对导致此问题的原因感到好奇。
答案 0 :(得分:2)
SKCameraNode存在一个错误,它无法正确居中。它现在可以正常使用ios 10,所以不要使用ios 9检查,只需使用你所说的更有意义的新设置。
我在ios 10上尚未更新的应用程序商店的游戏现在看起来不对劲。所以这必须是一般修复,而不是iOS版本特定的修复。
我甚至做了一个关于这个的错误报告,苹果回应并确认修复(27171076)
主要的要点是这个
要点: 使用默认的SpriteKit模板和SKCameraNode并将其放在屏幕中央会导致相机在iPhone上偏移。 在iPad上,它按预期为中心。
重现步骤: - 创建新的精灵工具包默认模板 - 在屏幕中间添加SKCamera节点和中心(使用代码或使用可视级别编辑器)
预期结果: 这款相机以iPad为中心,就像在iPad上一样。
实际结果: 相机在iPhone上是offCenter。在肖像中,HelloWorld标签向左移动,在横向移动到底部。“