2011-03-22 10 views
8

Tengo un UIButton en mi aplicación de iPhone que, cuando hace clic, reproduce una película. El código para reproducir la película se ve así:Agregar un MPMoviePlayerController en modo de pantalla completa?

NSURL *url = [[NSBundle mainBundle] URLForResource:@"Robot" withExtension:@"m4v"]; 
moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:url]; 
moviePlayer.controlStyle = MPMovieControlModeDefault; 
[moviePlayer.view setFrame: self.view.bounds]; 
[self.view addSubview: moviePlayer.view]; 
[moviePlayer play]; 

me gustaría la película para abrir en modo de pantalla completa, la forma en que todas las películas hicieron antes de la actualización iOS 3.2, donde el azul botón "Done" estaba en la esquina superior izquierda, y el video se reproducía en modo paisaje de forma predeterminada.

¿Alguien sabe cómo hacer esto? Gracias.

Respuesta

17

Suponiendo que self.view está usando toda la pantalla:

NSURL *url = [[NSBundle mainBundle] URLForResource:@"Robot" withExtension:@"m4v"]; 
moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:url]; 
moviePlayer.controlStyle = MPMovieControlStyleFullscreen; 
moviePlayer.view.transform = CGAffineTransformConcat(moviePlayer.view.transform, CGAffineTransformMakeRotation(M_PI_2)); 
[moviePlayer.view setFrame: self.view.bounds]; 
[self.view addSubview: moviePlayer.view]; 
[moviePlayer play]; 

Ahora suponiendo que básicamente no desea utilizar el self.view actual, sino que simplemente lo han trabajando en pantalla completa (esto lo llamo; fake- pantalla completa ya que no invoca la propiedad de pantalla completa);

NSURL *url = [[NSBundle mainBundle] URLForResource:@"Robot" withExtension:@"m4v"]; 
moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:url]; 
moviePlayer.controlStyle = MPMovieControlStyleFullscreen; 
moviePlayer.view.transform = CGAffineTransformConcat(moviePlayer.view.transform, CGAffineTransformMakeRotation(M_PI_2)); 
UIWindow *backgroundWindow = [[UIApplication sharedApplication] keyWindow]; 
[moviePlayer.view setFrame:backgroundWindow.frame]; 
[backgroundWindow addSubview:moviePlayer.view]; 
[moviePlayer play]; 
+0

Gracias! En realidad, self.view no es pantalla completa. ¿Sabes cómo configurar el video para que sea pantalla completa? – rottendevice

+3

Oh, espera, lo encontré. '[moviePlayer setFullscreen: YES animated: YES];' – rottendevice

+0

Oh ... espera otra vez! Al conectar esa línea, se evita que el video se cargue en el paisaje. ¿Alguna idea de cómo hacer esto? – rottendevice

11

Creo que la mejor manera de resolverlo está utilizando el MPMoviePlayerViewController en lugar de la MPMoviePlayerController.

La clase MPMoviePlayerViewController implementa un controlador de vista simple para mostrar películas de pantalla completa. A diferencia del uso de un objeto MPMoviePlayerController por sí solo para presentar una película de inmediato, puede incorporar un controlador de reproducción de reproductor de película donde quiera que normalmente use un controlador de vista.

Para presentar un controlador de vista de reproductor de películas de forma modal, normalmente utiliza el método presentMoviePlayerViewControllerAnimated:. Este método es parte de una categoría en la clase UIViewController y está implementado por el Media Player framework. El método presentMoviePlayerViewControllerAnimated: presenta un controlador de vista de reproductor de películas utilizando las animaciones de transición estándar para presentar contenido de video. Para descartar un controlador de vista de reproductor de películas presentado de forma modal, llame al método dismissMoviePlayerViewControllerAnimated.

+2

Sí, usar 'MPMoviePlayerViewController' minimiza la necesidad de escribir muchos códigos. – Raptor

Cuestiones relacionadas