Объекты, падающие на Землю независимо от ориентации устройства

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

Ответ 1

Я думаю, вы используете симулятор, поэтому гравитация всегда ортогональна к дну.

Поведение должно отличаться на реальном устройстве imo., так как вы всегда будете слегка наклонять устройство.

Ответ 2

1.) Убедитесь, что вы используете правильно сохраненный файл. 2.) Возможно, блок блокировки коммутатора не сможет получить доступ к Потрать, PotraitUpsideDown, LandscapeLeft и LandscapeRight. Затем он может перейти к умолчанию. Проверьте определения для этого. Тогда доступен гравитация.