Po pierwsze, MPMoviePlayerController jest trochę inny niż MPMoviePlayer * View * Controller, więc niektóre z tych odpowiedzi prowadzą do problemów podczas konwersji aplikacji, które zostały zbudowane w środowisku iOS 4.3+.
Zbudowałem kilka aplikacji przy użyciu MPMoviePlayerController, który działał poprawnie po zbudowaniu w systemie iOS 3.2. Kiedy przebudowałem go za pomocą XCode 3.2.6, (iOS 4.3), wideo nie odtwarza się nawet na iPhonie. I ponieważ ustalona, że dodając wystąpienie MPMoviePlayerController do podrzędny, a następnie prezentuje modalnego (Player jest UIViewController) z movplayer w fullScreenMode:
//from didSelectRowAtIndexPath
Vid *selected = [items objectAtIndex:position];
player = [[Player alloc] init];
movplayer = [[MPMoviePlayerController alloc] initWithContentURL:selected.vidURL];
movplayer.view.frame = player.view.bounds;
movplayer.view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight |
UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin |
UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin;
[player.view addSubview:movplayer.view];
[self presentModalViewController:player animated:YES];
[movplayer setFullscreen:YES animated:NO];
[movplayer play];
[player release];
//movplayer is released inside - (void)exitedFullscreen:(NSNotification*)notification
Zrobiono to ze względu na UINavigationBar jest pół odciąć gdy obracanie.
Kiedy dotarłem do wersji na iPada aplikacji, opcja modalna nie zadziałałaby estetycznie. Miał także pasek nawigacyjny UISplitViewController i paski narzędzi połowicznie odcięte podczas obracania w trybie pełnoekranowym. Więc próbowałem implementacji MPMoviePlayerViewController zamiast MPMoviePlayerController. Z tej konwersji, XCode dał mi błędy podczas próby ustawienia:
movplayer.controlStyle = MPMovieControlStyleEmbedded;
właściwy sposób, aby to zrobić z MPMoviePlayerViewController jest:
movplayer.moviePlayer.controlStyle = MPMovieControlStyleEmbedded;
Gdy odtwarzacz jest dodawana jako podrzędny, gesty dociskowych przełącza odtwarzacz pomiędzy trybem fullScreen i rozmiarem parentView (player.view.bounds) płynnie, a także zachowuje paski narzędzi i navBars natywne dla rodzica.
//iPad version with a view (viewForMovie) inside the DetailViewController
movplayer = [[MPMoviePlayerViewController alloc] initWithContentURL:[current vidURL]];
movplayer.moviePlayer.controlStyle = MPMovieControlStyleEmbedded;
movplayer.view.backgroundColor = [UIColor clearColor];
movplayer.view.frame = viewForMovie.bounds;
[viewForMovie addSubview:movplayer.view];
Te dwa przykłady pokazują niektóre obejścia dla tych, którzy chcą przekonwertować aplikacje na iPhone'a lub iPada na nowszą wersję systemu iOS.
To pytanie innego użytkownika przepełnienia może dać wgląd w to, co próbujesz osiągnąć. Mam nadzieję, że to pomoże.? później. –
GMoP