Mon application utilise CMMotionManager pour suivre le mouvement du périphérique, mais iOS renvoie toujours les données de mouvement du périphérique dans l'orientation standard du périphérique (bouton d'accueil en bas).Comment ajuster les données CMMotionManager pour l'orientation sous iOS 8?
Pour obtenir les données de mouvement dans la même orientation que mon UIView, j'accumule la vue se transforme de mon point de vue vers le bas à la fenêtre comme ceci:
CGAffineTransform transform = self.view.transform;
for (UIView *superview = self.view.superview; superview; superview = superview.superview) {
CGAffineTransform superviewTransform = superview.transform;
transform = CGAffineTransformConcat(transform, superviewTransform);
}
Cette transformée obtient calculée correctement sous iOS 6 & 7, mais iOS 8 change le modèle de rotation et maintenant les vues retournent toujours la transformation d'identité (pas de rotation), peu importe comment le périphérique est orienté. Les données du gestionnaire de mouvement est toujours corrigée dans l'orientation standard. La surveillance des notifications de rotation UIDevice et le calcul manuel des quatre transformations semblent être une approche pour obtenir cette transformation sous iOS 8, mais cela semble également mauvais car l'orientation de l'appareil ne correspond pas nécessairement à l'orientation de ma vue (à l'inverse une orientation de l'appareil normalement non prise en charge). Quel est le meilleur moyen d'obtenir la sortie de CMMotionManager dans l'orientation d'un UIView spécifique sous iOS 8?
Merci pour la perspicacité –
Pas de problème! Si tout va bien, cela aidera les autres à chercher la même chose. –