2012-10-22 6 views
6

Die unterstützten Schnittstellenausrichtungen meiner App sind Hochformat und auf den Kopf gestellt. Wenn ein Video abgespielt wird, möchte ich jedoch, dass es im Vollbildmodus wiedergegeben wird. Derzeit mit diesem Code, spielt es nur Porträt, auch wenn das Gerät gedreht wird:So spielen Sie Landschaftsvideo mit MPMovieViewController in einer Nur-Porträt-App

[player.moviePlayer setControlStyle:MPMovieControlStyleFullscreen]; 
player.view.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth; 
[self presentMoviePlayerViewControllerAnimated:player]; 

Wie kann ich es Modus in Landschaft zwingen?

+0

Für iOS6, diese Antwort ist besser: http://stackoverflow.com/questions/12577879/shouldautorotatetointerfaceorientation-is-not-working-in-ios-6 – fpauer

Antwort

11

Hier ist, wie ich es tun:
In der Projektdatei, stellen Sie sicher, dass Sie die Landschaft Orientations unterstützen supported interface orientations
nun in allen Ihren Viewcontrollers, die noch Portrait Nur sein sollte, fügen Sie diesen Code

//ios6 
- (BOOL)shouldAutorotate { 
    return NO; 
} 

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation 
{ 
    return UIInterfaceOrientationPortrait; 
} 
- (NSUInteger)supportedInterfaceOrientations { 
    return UIInterfaceOrientationMaskPortrait; 
} 

//ios4 and ios5 
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    return (interfaceOrientation == UIInterfaceOrientationPortrait); 
} 

Ich habe sowohl die iOS5 und iOS6 Anrufe eingegeben, so dass mein Code auf beiden läuft.

Wenn Ihre Ansicht von MPMoviePlayerController in den Vollbildmodus wechselt, wird ein neuer ViewController angezeigt, der über allem anderen liegt. Es wird also erlaubt, entsprechend den unterstützten Schnittstellenorientierungen des Projekts zu rotieren. Es wird nicht sehen, wo Sie die anderen ViewControllers in Portrait gezwungen haben.

+1

Dank, werde ich auf diese zurückgreifen, wenn ich muss, aber ich hoffe, dass es einen Weg gibt, dies zu tun, ohne den Orientierungscode in jeden View-Controller zu legen (es gibt eine Menge). – soleil

+0

Was ich tue, ist ein UIViewController, der nur diese Methoden enthält. Dann mache ich alle meine UIViewControllers, die portrait sein müssen, einfach von diesem erben, anstatt von UIViewController zu erben. In der '@ interface' Zeile der' .h' Datei setze ich den Namen von MyPortraitViewController an die Stelle von UIViewController. – Walter

+0

@soleil, zu meinem Verständnis, dies ist der einzige Weg, es zu tun, leider ... der Grund, warum ist in der Apple-Dokumentation auf 'UIViewController' unter ** supportedInterfaceOrientations ** Abschnitt:' Das System schneidet die View-Controller unterstützt Orientierungen mit den unterstützten Orientierungen der Anwendung (wie von der Datei Info.plist oder der Anwendung des Anwendungsdelegaten bestimmt: supportedInterfaceOrientationsForWindow: method), um zu bestimmen, ob rotiert werden soll. –