Como ajusto os dados do CMMotionManager para orientação no iOS 8?

Meu aplicativo usa o CMMotionManager para rastrear o movimento do dispositivo, mas o iOS sempre retorna dados de movimento do dispositivo na orientação padrão do dispositivo (botão home na parte inferior).

Para obter os dados de movimento na mesma orientação que meu UIView, acumulo as transformações de exibição da janela de exibição para a janela da seguinte maneira:

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

Essa transformação é calculada corretamente no iOS 6 e 7, mas o iOS 8 altera o modelo de rotação e agora as visualizações sempre retornam a transformação de identidade (sem rotação), independentemente da orientação do dispositivo. Os dados do gerenciador de movimento ainda são fixos na orientação padrão.

Monitorar as notificações de rotação do dispositivo UID e calcular manualmente as quatro transformações parece uma abordagem para obter essa transformação no iOS 8, mas também parece ruim, pois a orientação do dispositivo não necessariamente corresponde à orientação da minha visualização (ou seja, a cabeça do iPhone é uma orientação do dispositivo não normalmente suportado).

Qual é a melhor maneira de obter a saída do CMMotionManager para a orientação de um UIView específico no iOS 8?

questionAnswers(2)

yourAnswerToTheQuestion