Как настроить данные CMMotionManager для ориентации под iOS 8?

Мое приложение использует CMMotionManager для отслеживания движения устройства, но iOS всегда возвращает данные движения устройства в стандартной ориентации устройства (кнопка «Домой» внизу).

Чтобы получить данные движения в той же ориентации, что и мой UIView, я накапливаю трансформации вида из моего вида в окно следующим образом:

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

Это преобразование рассчитывается правильно в iOS 6 и 7, но iOS 8 меняет модель вращения, и теперь представления всегда возвращают преобразование идентичности (без вращения), независимо от того, как устройство ориентировано. Данные из диспетчера движения все еще фиксированы в стандартной ориентации.

Мониторинг уведомлений о ротации UIDevice и ручной расчет четырех преобразований кажется одним из подходов к получению этого преобразования в iOS 8, но это также кажется плохим, поскольку ориентация устройства не обязательно будет соответствовать ориентации моего вида (т. Е. Верхняя сторона iPhone - это ориентация устройства не нормально поддерживается).

Каков наилучший способ получить выходные данные из CMMotionManager для ориентации определенного UIView под iOS 8?

Ответы на вопрос(2)

Ваш ответ на вопрос