En primer lugar, MPMoviePlayerController es un poco diferente que MPMoviePlayer * View * Controller, por lo que algunas de estas respuestas generan problemas al convertir aplicaciones que se crearon en un entorno iOS 4.3+.
He creado algunas aplicaciones utilizando MPMoviePlayerController que funcionó bien cuando se creó en iOS 3.2. Cuando lo reconstruí con XCode 3.2.6, (iOS 4.3), los videos ni siquiera se reproducen en el iPhone. Yo desde fijo que mediante la adición de la instancia MPMoviePlayerController a una vista secundaria, a continuación, la presentación de un modal (Player es un UIViewController) con el movplayer en 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
Esto se hizo debido a la UINavigationBar siendo la mitad cortada cuando girando.
Cuando llegué a la versión iPad de la aplicación, la opción modal no funcionaría estéticamente. También estaba teniendo UISplitViewController navBar y barras de herramientas cortadas a la mitad cuando rotaba en modo de pantalla completa. Así que traté de implementar MPMoviePlayerViewController en lugar de MPMoviePlayerController. Con esta conversión, XCode me dio errores al intentar establecer:
movplayer.controlStyle = MPMovieControlStyleEmbedded;
La forma correcta de hacer esto con un MPMoviePlayerViewController es:
movplayer.moviePlayer.controlStyle = MPMovieControlStyleEmbedded;
Cuando se añade el jugador como subvista, los gestos de pellizco Alternará al reproductor entre pantalla completa y el tamaño de su parentView (player.view.bounds) sin problemas, así como también conservará las barras de herramientas y navBars nativos del elemento principal.
//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];
Así que estos dos ejemplos muestran algunas soluciones para aquellos que quieren convertir sus aplicaciones para el iPhone o el iPad a una nueva versión de iOS.
Esta pregunta, por parte de otro usuario desbordado, puede dar una idea de lo que está tratando de lograr. Espero que esto ayude.? luego. –
GMoP