【发布时间】:2016-09-21 04:40:57
【问题描述】:
我已经看到了两种使用 CoreMotion 框架来描述不同设备方向的坠落物体行为的方法。我已经在代码中尝试了这两个版本,它们的行为似乎都符合我的预期,即无论设备方向如何,都会向地球坠落。
我只是好奇为什么两个版本的行为相同,即使对于第一个版本,x 和 y 方向的加速度,即dx 和dy,在横向切换?
1)
if var dx = data?.acceleration.x, var dy = data?.acceleration.y {
switch UIDevice.currentDevice().orientation {
case .Portrait:
dy = -dy
case .PortraitUpsideDown:
break
case .LandscapeRight:
swap(&dx, &dy)
case .LandscapeLeft:
swap(&dx, &dy)
dy = -dy
default:
dx = 0
dy = 0
}
gravity.gravityDirection = CGVector(dx: dx, dy: dy)
}
2)
if var dx = data?.acceleration.x, var dy = data?.acceleration.y {
switch UIDevice.currentDevice().orientation {
case .Portrait:
dy = -dy
case .PortraitUpsideDown:
break
case .LandscapeRight:
break
case .LandscapeLeft:
break
default:
dx = 0
dy = 0
}
gravity.gravityDirection = CGVector(dx: dx, dy: dy)
}
【问题讨论】:
-
如何定位设备以使其方向为 .LandscapeRight 或 .LandscapeLeft?
标签: ios iphone swift core-motion