MPMoviePlayerController rotation en plein écran alors que la Vue parent Contrôleur prend uniquement en charge le mode portrait
cette question n'est qu'une partie de mon problème. Je suis la mise en œuvre de iOS6, la rotation et l'orientation de soutien pour mon application existante.
J'ai donc un ViewController qui contient un MPMoviePlayerController incorporé dans le ViewController vue ( mon application le nécessite ). L'utilisateur peut jouer la vidéo et à l'afficher dans la vue intégrée ou cliquez sur le bouton plein écran en utilisant le lecteur par défaut des contrôles et le joueur passe en mode plein écran.
Maintenant, j'ai limité la-vue-contrôleur pour prendre en charge uniquement l'orientation portrait à l'aide de la nouvelle rotation des Api fournies par iOS6.
//New Autorotation support.
- (BOOL)shouldAutorotate;
{
return NO;
}
- (NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskPortrait;
}
cela fonctionne assez bien. le ViewController prend uniquement en charge le portrait et l'utilisateur de lire le film en vue intégrée.
Maintenant, le problème vient, lorsque l'Utilisateur passe en mode plein écran. En mode plein écran, le film est de garder sur la rotation, lorsque je tourne le simulateur/de l'appareil. Lorsque je tourne l'appareil pendant le film en cours de lecture en mode plein écran avec des points d'arrêt dans shouldAutorotate
et supportedInterfaceOrientations
, il vient toujours dans ces deux méthodes qui renvoient des NO
et UIInterfaceOrientationMaskPortrait
respectivement, mais tout le film est en rotation ...
Pourquoi est-ce arrivé? .... c'est une partie de ma question ... la 2ème partie, c'est que je veux le film pour entrer en mode paysage lorsque l'utilisateur passe en mode plein écran. et je veux que le lecteur de film pour le verrouiller en mode paysage jusqu'à ce que l'utilisateur appuie sur le bouton TERMINÉ.
S'il vous plaît aider ....
OriginalL'auteur g.revolution | 2012-11-27
Vous devez vous connecter pour publier un commentaire.
vous pouvez essayer ci-dessous en fonction
AppDelegate
:vous pouvez faire état ici pour les deux modes.
comme si le lecteur windows media est en plein écran alors
return UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskLandscapeLeft | UIInterfaceOrientationMaskLandscapeRight;
sinon
return UIInterfaceOrientationMaskPortrait;
je ne l'ai pas essayé mais je pense que cela devrait fonctionner dans votre cas.
grâce
A très bien fonctionné pour moi! Voici un exemple de la façon dont j'ai implémenté: github.com/OpenWatch/OpenWatch-iOS/blob/master/OpenWatch/... Fondamentalement, vous avez juste besoin de quelques auditeurs sur
MPMoviePlayerWillEnterFullscreenNotification
etMPMoviePlayerWillExitFullscreenNotification
.Vos codes sont vraiment utiles, merci..
Génial, merci pour cette. Peu gênant, vous devez être constamment à la recherche d'une vidéo pour le plein écran, mais bon, le seul moyen que j'ai trouvé qui fonctionne. Merci encore.
merci @ChrisBallinger votre solution aide vraiment! la seule chose que je voulais vous demander - comment voulez-vous forcer le contrôleur, contenant MPMoviePlayerController pour redessiner lui-même dans le portrait, quand le joueur est fermé dans le paysage?
OriginalL'auteur Hindu
Pour plus de clarté, voici le code complet (ça se passe à l'intérieur de votre délégué d'application):
isFullScreen est un BOOL pour être déclaré dans AppDelegate.h
OriginalL'auteur etayluz
Je suggère d'utiliser un
MPMoviePlayerViewController
à la place. La sous-classer et de mettre en œuvre lasupportedInterfaceOrientations
méthode et retourUIInterfaceOrientationMaskLandscape
.Vous pourriez aussi avoir à mettre en œuvre les
shouldAutorotateToInterfaceOrientation:
méthode.Voir la classe de référence:
MPMoviePlayerViewController
Edit: Vous pouvez également jeter un oeil à ce post: iphone - force MPMoviePlayerController de lire la vidéo en mode paysage
j'ai ajouté un lien à ma réponse, peut-être aide
cette solution que vous avez mentionné est déjà mis en place et il ne travaille pas dans iOS6, qui était en fait le problème .. avant iOS6, cette solution a été fonctionne correctement. et maintenant, avec iOS6 je mettre en place de nouvelles fonctions à l'appui de iOS6 orientation .. je l'ai fait avec l'aide de @Woodenlabs réponse. mais le problème est que maintenant iOS5 est pas de travail ..
OriginalL'auteur Tobi
Ce qui m'habitait depuis un moment et j'ai eu tellement de différents horribles erreurs, mais finalement, j'ai fini par ne plus faire qu'à travers MPMoviePlayerController mais MPMoviePlayerViewController. J'ai juste tourné la auto.playerView qui est une propriété, avant de le présenter. Aussi j'ai ajouté le NSNotification qui va conduire à la commande principale et les principaux ViewController après la fin de la vidéo. Voici comment je me suis mis à exécution:
Et le rappel movieFinishedCallback: est comme suit,
Cela a fonctionné pour moi. Espérons que cela aide.
OriginalL'auteur Mohsin Khubaib Ahmed
dans votre projet, sélectionnez le nom du projet et la fenêtre de droite, sélectionnez l'onglet informations.
dans le custom ios cible propriétés
ajouter une clé et sélectionnez la clé: "interface Initiale de l'orientation" définir la valeur: Portrait (en bas du bouton home)
OriginalL'auteur Chu Chau
Pour iOS 6, vous pouvez utilisez cette réponse.
Mais si vous soutient < iOS 6 besoin d'une approche différente.
Vous devez créer personnalisé manette de navigation et de lui ajouter des méthodes pour la création avec la racine du contrôleur et de la méthode de rotation.
Elle ressemblera: m fichier et h fichier.
Et dans votre AppDelegate doit appeler la méthode init:
H fichier:
et
En m fichier:
OriginalL'auteur biloshkurskyi.ss
utiliser cette
il fonctionner avec ios 7
OriginalL'auteur Shiv Kumar
Il suffit d'ajouter ce code à la vôtre-vue-contrôleur
OriginalL'auteur AleyRobotics