iphone - force MPMoviePlayerController de lire la vidéo en mode paysage
J'ai une application en mode portrait uniquement, mais lorsque l'utilisateur lance une vidéo que j'ai envie de jouer en plein écran en mode paysage (le lecteur vidéo n'a pas l'air bien en mode portrait). Je suis en train de jouer comme ceci:
[self.view addSubview:myMoviePlayer.view];
[self.myMoviePlayer setFullscreen:YES animated:YES];
[self.myMoviePlayer play];
Quelle est la meilleure façon d'accomplir cette?
OriginalL'auteur sol | 2011-01-19
Vous devez vous connecter pour publier un commentaire.
Lire cet article:
http://iosdevelopertips.com/video/getting-mpmovieplayercontroller-to-cooperate-with-ios4-3-2-ipad-and-earlier-versions-of-iphone-sdk.html
L'idée principale est:
OriginalL'auteur Murlakatam
Mon application est assez simple, avec un UINavigationController à la racine de vue-contrôleur qui affiche un écran de navigation principal, et quelques écrans de détail. L'écran principal ne prend pas en charge la rotation en raison de contraintes de mise en forme, et pour la cohérence des écrans de détail (qui sont tout simplement poussé sur la navcontroller de la pile) ne sont pas non plus. Toutefois, certains des écrans de détail contenir des liens vers des vidéos et les vidéos besoin d'afficher en mode portrait. L'application affiche le joueur modal à l'aide d'MPMoviePlayerController.
J'ai juste eu un problème similaire, et j'ai essayé la solution au-dessus de laquelle s'applique une transformation affine à la MPMoviePlayerController de vue, mais le problème est que la barre d'état continue à s'afficher en mode portrait, et se chevauchent modale de l'acteur de cinéma de vue (sur la gauche, si elle est considérée en fonction de la rotation ci-dessus). J'ai essayé plusieurs choses sans succès:
Masquer la barre d'état. Cela n'a pas fonctionné, parce que le joueur n'existe dans son propre monde, et va de l'avant et présente la barre d'état de toute façon. Je ne pouvais pas trouver un moyen de faire disparaître.
La définition explicite de la barre d'état de l'orientation. Je ne sais pas exactement pourquoi cela ne fonctionne pas, mais je soupçonne que c'était parce que je l'avais indiqué dans mon info.plist que seul portrait a été pris en charge et a donc été coupé de faire des changements.
Net-net, le ci-dessus ne fonctionne pas pour moi. Tout aussi bien, b/c Apple avertit devs pour traiter la MPMoviePlayerController opaque, et (surtout avec la méthode transformation) j'ai eu violation de cette.
À la fin, j'ai trouvé une solution plus simple qui a fonctionné pour moi:
Dans l'info.plist, j'ai indiqué que toutes les orientations (sauf à l'envers, de sorte que le standard de l'iPhone idiome) ont été pris en charge.
Sous-classe UINavigationController, et de remplacer les appropriée shouldAutorotate méthodes de sorte que seul Portrait de prise en charge (voir cette solution, entre autres, pour savoir comment faire cela dans iOS <6 et iOS6 simultanément).
Cela a fonctionné parce que:
Alors que j'avais indiqué que l'autorotation est pris en charge par l'application, je le couper à la UINavigationController sous-classe qui contient tous les points de vue, je suis rendu... donc tout ce qui reste portrait, , à l'exception:
La MPMoviePlayerController est présenté sous forme modale, au sommet de la NavigationController, et vit dans son propre monde. Par conséquent, il est libre de prêter attention à ce qui est dans l'info.plist, et tourner tout par lui-même.
Il y a un tas d'exemples sur la manière de présenter le joueur modal, mais pour une référence rapide, voici mon code:
OriginalL'auteur Justin Middleton
Pour la lecture en plein écran utiliser MPMoviePlayerViewController et ensuite de se lancer et de jouer en format paysage, l'utilisation de la "shouldAutorotateToInterfaceOrientation" la méthode sur la MPMoviePlayerViewController classe.
Il ressemble à ceci:
ce n'est pas de travail pour moi - je l'ai vue contrôleur qui présente les films, et entièrement en mode paysage, mais le film encore lance dans le portrait... des idées ?
OriginalL'auteur Hivebrain
J'ai eu la même situation, mais je suis en utilisant iOS 6 et un NavController en fonction du projet. Ce qui rend intéressant, c'est le ViewController qui héberge le MPMoviePlayerController je ne veux pas tourné, mais je voulais la vidéo en elle être tourné.
Je viens de faire pivoter manuellement la MPMoviePlayerController que nécessaire en fonction des dispositifs d'orientation. _videoView est un MPMoviePlayerController propriété de la ViewController. Pour l'exemple, j'ai juste codé en dur la hauteur et la largeur d'un 16x9 ratio d'aspect que j'ai l'intention cette vidéo à télécharger sur youtube.
J'ai aussi appeler updateVideoRotationForCurrentRotationwithanimation après avis n'apparaissent donc il a la bonne orientation initiale.
OriginalL'auteur Tod Cunningham
J'utilise le code suivant pour travailler UNIQUEMENT avec le mode PAYSAGE pour les Movieplayer.
OriginalL'auteur g212gs