gpt4 book ai didi

swift - 为什么 iOS SpriteKit 场景/ View 坐标在 iOS 7.1 和 iOS 8 之间不同?

转载 作者:搜寻专家 更新时间:2023-10-31 23:05:34 26 4
gpt4 key购买 nike

我正在探索 SpriteKit 的 iOS 8 beta 版本,我的项目部署目标设置为 iOS 7,因此我可以在运行已发布的 iOS 7.1 的 iPad Air 上进行测试。

我发现我的 SKScene 和它的 SKView 之间的坐标在模拟器(运行 iOS 8)和我的设备(运行 iOS 7.1)之间不一致。这是我用来隔离不一致的代码:

从 iOS SpriteKit 游戏模板开始,我修改了设置,以便仅支持Landscape Right 方向,并将以下代码添加到 GameScene类:

class GameScene: SKScene {



var scaleFromView: CGPoint!

override func didMoveToView(view: SKView) {
/* Setup your scene here */
label = SKLabelNode(fontNamed:"Chalkduster")
label.text = "Hello, World!";
label.fontSize = 65;
label.position = CGPoint(x:0.0, y:0.0);
label.zPosition = -1.0

let referencePt = CGPoint(x: 100, y: 100)
var viewPt = convertPointToView(CGPoint(x: 0, y: 0))
viewPt = viewPt + referencePt
let scenePt = convertPointFromView(viewPt)
scaleFromView = scenePt / referencePt
println(" view.bounds is \(view.bounds)")
println(" scene.size is \(scene.size)")
println("scaleFromView is \(scaleFromView)")

world.addChild(label)
}


请注意,这使用了一些我为 CGPoint 定义的运算符:

@infix func + (a: CGPoint, b: CGPoint) -> CGPoint {
return CGPoint(x: a.x + b.x, y: a.y + b.y)
}

@infix func - (a: CGPoint, b: CGPoint) -> CGPoint {
return CGPoint(x: a.x - b.x, y: a.y - b.y)
}

@infix func * (a: CGPoint, b: CGPoint) -> CGPoint {
return CGPoint(x: a.x * b.x, y: a.y * b.y)
}

@infix func / (a: CGPoint, b: CGPoint) -> CGPoint {
return CGPoint(x: a.x / b.x, y: a.y / b.y)
}

任何 iOS 8 模拟器下运行时,包括 iPad Air 模拟,println 语句日志(正如我所期望的场景和 View 边界设置) :

  view.bounds is (0.0,0.0,1024.0,768.0)
scene.size is (1024.0,768.0)
scaleFromView is (1.0,-1.0)

但是当我在我的设备上运行它时,我得到:

  view.bounds is (0.0,0.0,768.0,1024.0)
scene.size is (1024.0,768.0)
scaleFromView is (0.75,-0.75)

因此,该 View 似乎没有正确反射(reflect)它是横向的。 为什么会这样?

PS:我已经下载了 iOS 7.1 模拟器,现在可以报告它们与设备的行为一致。也就是说,这似乎是 iOS 7.1 的一个错误/功能。

最佳答案

下载并安装 iOS 7.1 模拟器后,我能够确定它们与设备的行为一致。也就是说,他们也报告 view.bounds 反射(reflect)了纵向模式而不是横向模式,即使(或者可能因为)我的应用程序是横向的。

这似乎是 iOS 7.1 的错误/功能。

关于swift - 为什么 iOS SpriteKit 场景/ View 坐标在 iOS 7.1 和 iOS 8 之间不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25050389/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com