Как настроить данные 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?