Wie passe ich CMMotionManager-Daten zur Orientierung unter iOS 8 an?

Meine Anwendung verwendet CMMotionManager, um die Gerätebewegung zu verfolgen. IOS gibt die Gerätebewegungsdaten jedoch immer in der Standardausrichtung des Geräts zurück (Home-Schaltfläche unten).

Um die Bewegungsdaten in dieselbe Ausrichtung wie mein UIView zu bringen, akkumuliere ich die Ansichtstransformationen aus meiner Ansicht in das folgende Fenster:

CGAffineTransform transform = self.view.transform;
for (UIView *superview = self.view.superview; superview; superview = superview.superview) {
    CGAffineTransform superviewTransform = superview.transform;
    transform = CGAffineTransformConcat(transform, superviewTransform);
}

Diese Transformation wird unter iOS 6 und 7 korrekt berechnet, aber iOS 8 ändert das Rotationsmodell und jetzt geben die Ansichten immer die Identitätstransformation (keine Rotation) zurück, unabhängig davon, wie das Gerät ausgerichtet ist. Die Daten aus dem Motion Manager sind jedoch weiterhin in der Standardausrichtung fixiert.

Überwachen von UIDevice-Rotationsbenachrichtigungen und manuelles Berechnen der vier Transformationen scheint ein Ansatz zu sein, um diese Transformation unter iOS 8 zu erhalten, aber es scheint auch schlecht zu sein, da die Geräteorientierung nicht unbedingt mit der Ausrichtung meiner Ansicht übereinstimmt (dh die Oberseite auf dem iPhone ist eine Geräteorientierung) normalerweise nicht unterstützt).

Wie lässt sich die Ausgabe von CMMotionManager unter iOS 8 am besten an der Ausrichtung eines bestimmten UIView ausrichten?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage