2012-10-22 12 views
6

obsługiwane kierunki interfejsu mojej aplikacji są portret i odwrotnie. Jednak po odtworzeniu wideo chcę, aby odtwarzał krajobraz w pełnym ekranie. Obecnie z tym kodem odtwarzany jest tylko portret, nawet gdy urządzenie jest obracane:Jak odtwarzać wideo z MPMovieViewController krajobrazu w app portretowej tylko

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

Jak mogę wymusić przejście w tryb poziomy?

+0

Dla iOS6, to odpowiedź brzmi lepiej: http://stackoverflow.com/questions/12577879/shouldautorotatetointerfaceorientation-is-not-working-in-ios-6 – fpauer

Odpowiedz

11

Oto jak to zrobić:
W pliku projektu, upewnij się, że wspieranie kierunków krajobrazu supported interface orientations
Teraz we wszystkich swoich ViewControllers że nadal powinny być tylko portret, dodać ten kod

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

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

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

Włożyłem w zarówno iOS5 i iOS6 wzywa więc, że mój kod będzie działał na obu.

Gdy widok MPMoviePlayerController staje fullscreen, to będzie nowy ViewController warstwowy na domiar wszystkiego. Pozwala to na obrót zgodnie ze Wspieranymi Orientacjami Interfejsu Projektu. Nie zobaczy, gdzie zmusiłeś inne ViewControllery do portretu.

+1

dzięki, będę uciekać się do tego, gdybym Muszę, ale mam nadzieję, że jest sposób na zrobienie tego bez konieczności umieszczania tego kodu orientacyjnego w każdym kontrolerze widoku (jest ich dużo). – soleil

+0

Co mogę zrobić, to stworzyć UIViewController że ma tylko te metody w nim. Następnie sprawiam, że wszystkie moje UIViewControllery, które muszą być portretami, odziedziczą po prostu dziedziczenie z UIViewController. W linii '@ interface' pliku' .h' umieszczam nazwę MyPortraitViewController w miejscu UIViewController. – Walter

+0

@soleil, w moim rozumieniu, jest to jedyny sposób, aby to zrobić, niestety ... dlatego jest w docs firmy Apple na 'UIViewController' pod ** supportedInterfaceOrientations ** sekcja:' System przecina obsługiwane kierunki kontrolera widoku za obsługiwanych kierunków aplikację (określanej przez plik Info.plist lub aplikacji App delegata: supportedInterfaceOrientationsForWindow: Method) w celu ustalenia, czy rotate.' –

Powiązane problemy