Я видел два способа описания поведения падающих объектов для разных ориентаций устройств с использованием каркаса CoreMotion. Я пробовал обе версии в коде, и они оба, похоже, ведут себя так, как я ожидаю, т.е. Падают на Землю независимо от ориентации устройства.
Мне просто интересно, почему обе версии ведут себя одинаково, хотя для первой версии ускорение в направлениях х и у, т.е. 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)
}