Zwingen Querformat-Orientierung auf fullscreen MPMoviePlayerController verhindert die korrekte Drehrichtung beim verlassen Vollbild
Habe ich eine iPhone-Anwendung (iOS 6+) , unterstützt alle Ausrichtungen. Jedoch, nur Querformat unterstützt werden sollte, wenn ein MPMoviePlayerController ist die Wiedergabe eines Videos im Vollbildmodus.
Ich die folgende Lösung gefunden, die auf Stack-Überlauf und es funktioniert.
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePlayerWillEnterFullscreenNotification:) name:MPMoviePlayerWillEnterFullscreenNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePlayerWillExitFullscreenNotification:) name:MPMoviePlayerWillExitFullscreenNotification object:nil];
...
-(NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window {
if (self.landscapeOnlyOrientation) {
return UIInterfaceOrientationMaskLandscapeLeft | UIInterfaceOrientationMaskLandscapeRight;
}
return UIInterfaceOrientationMaskAll;
}
- (void)moviePlayerWillEnterFullscreenNotification:(NSNotification*)notification {
self.landscapeOnlyOrientation = YES;
}
- (void)moviePlayerWillExitFullscreenNotification:(NSNotification*)notification {
self.landscapeOnlyOrientation = NO;
}
Jedoch ein ärgerliches problem weiterhin besteht, nämlich, dass, wenn das video beendet Vollbild im hochformat (nach dem Spiel in Zwangs-Landschaft), die zugrunde liegende Ansicht nicht wieder zurück drehen. Ich muss manuell drehen Sie das Gerät ins Querformat und zurück zu hochformat auslösen Aktualisierung der Orientierung. Gibt es eine Möglichkeit, die ich auslösen kann diese Art von update Programm?
Den folgenden screenshots soll dies verdeutlichen was ich meine:
NB: aus verschiedenen Gründen, mit MPMoviePlayerViewController ist nicht möglich.
InformationsquelleAutor der Frage svth | 2014-02-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hallo ich hatte gleiche problem habe ich gelöst -
Hier ist mein kompletter code....
Müssen Sie zuerst ändern Sie im appdelegate:
Register Benachrichtigungen im Vollbild:
Dann fügen Sie code-Zeile in der player-controller:
Dieser code ist getestet in iOS6 und iOS7 funktioniert. Danke 🙂
Bitte lassen Sie mich wissen, wenn es irgendeine Frage gibt.....
InformationsquelleAutor der Antwort Vijay Sharma
Müssen Sie Unterklasse und bieten Landschaft als unterstützte interface-Orientierung.
InformationsquelleAutor der Antwort Srikanth
Könnten Sie versuchen, zu "Kraft" eine Orientierung zu aktualisieren, lassen Sie das system Griff auf die richtige Ausrichtung für Sie:
Es ist hack-ish, aber es funktioniert.
InformationsquelleAutor der Antwort Rivera
Das klingt vielleicht verrückt, aber, können Sie versuchen, lokal speichern die Letzte Orientierung vor der Eröffnung der video-view-controller und dann mit
application:supportedInterfaceOrientationsForWindow:
zurück die gespeicherte Ausrichtung und die Kraft des view-Controllers auf ihm zu bleiben und nicht rotieren.InformationsquelleAutor der Antwort Juan de la Torre
Können Sie ändern Ihre Ausrichtung programmatisch wie dieser
Und vergessen Sie nicht, fügen Sie
#import <objc/message.h>
InformationsquelleAutor der Antwort Fran Martin
Ich denke, Sie können sich registrieren, Ihre viewcontroller für die Lage des Gerätes und rufen viewcontroller Ausrichtung der Methode mit Nachdruck.
InformationsquelleAutor der Antwort abhishekkharwar
Verwenden Sie supportedIterfaceOrientationsForwindow dann suchen nach: MPInlineVideoFullscreenViewController. Es ist ein bisschen schwierig zu finden die rechten view-controller, aber es funktioniert.
Hier ist der Beispielcode:
InformationsquelleAutor der Antwort Övünç Metin
müssen Sie diesen code für iOS7
es funktioniert perfekt und einfach
InformationsquelleAutor der Antwort AleyRobotics