encontrado.
Tuve el mismo problema: esto es lo que hice. Sugeriría agregar el código a su proyecto uno por uno para ver exactamente cómo funciona.
Primero - Puse las cosas en modo retrato.
[[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationPortrait animated:NO];
Luego empujé la película hacia abajo en la barra de estado.Nota - esto asume que el vídeo tiene una relación de aspecto de 4x3
theVideo = [[MPMoviePlayerController alloc] initWithContentURL: [NSURL fileURLWithPath : path]];
float aspectRatio = (3.0f/4.0f);
float theMovieHeight = [self view].bounds.size.width * aspectRatio;
[[theVideo view] setFrame:(CGRectMake(0, [self view].bounds.size.height - theMovieHeight, [self view].bounds.size.width, theMovieHeight))];
Luego, en el lugar donde se inicia la aplicación (en mi proyecto, que está en la función didFinishLaunchingWithOptions
) - de todos modos, sólo tiene acceso a la objeto de ventana
float aspectRatio = (3.0f/4.0f);
float theMovieHeight = self.window.bounds.size.width * aspectRatio;
float theSpaceAboveTheMovie = self.window.bounds.size.height - theMovieHeight;
float whereTheMovieShouldBeCentered = (self.window.bounds.size.height - theMovieHeight)/2;
CGAffineTransform theTransform = CGAffineTransformMakeTranslation(0,0);
theTransform = CGAffineTransformScale(theTransform, 1.0f/aspectRatio, 1.0f/aspectRatio);
theTransform = CGAffineTransformTranslate(theTransform, -whereTheMovieShouldBeCentered, 0);
theTransform = CGAffineTransformRotate(theTransform, M_PI/2);
theTransform = CGAffineTransformTranslate(theTransform, 0, -theSpaceAboveTheMovie);
[self.window setTransform:theTransform];
Recuerde que las transformaciones afines se realizan en orden inverso. Así que si usted quiere ver lo que cada archivo de transformación está haciendo (yo sugeriría que debería), comente los tres primeros
Aquí debería ver la película de la barra y el estado centrada en la página
// theTransform = CGAffineTransformScale(theTransform, 1.0f/aspectRatio, 1.0f/aspectRatio);
// theTransform = CGAffineTransformTranslate(theTransform, -whereTheMovieShouldBeCentered, 0);
// theTransform = CGAffineTransformRotate(theTransform, M_PI/2);
theTransform = CGAffineTransformTranslate(theTransform, 0, -theSpaceAboveTheMovie);
Entonces, el primer dos
Aquí debería ver la película de la barra y el estado de gira y ya no se centra
// theTransform = CGAffineTransformScale(theTransform, 1.0f/aspectRatio, 1.0f/aspectRatio);
// theTransform = CGAffineTransformTranslate(theTransform, -whereTheMovieShouldBeCentered, 0);
theTransform = CGAffineTransformRotate(theTransform, M_PI/2);
theTransform = CGAffineTransformTranslate(theTransform, 0, -theSpaceAboveTheMovie);
Aquí debería ver que gira y se centra
// theTransform = CGAffineTransformScale(theTransform, 1.0f/aspectRatio, 1.0f/aspectRatio);
theTransform = CGAffineTransformTranslate(theTransform, -whereTheMovieShouldBeCentered, 0);
theTransform = CGAffineTransformRotate(theTransform, M_PI/2);
theTransform = CGAffineTransformTranslate(theTransform, 0, -theSpaceAboveTheMovie);
Y con todos ellos, se gira y pantalla completa
Puede descargar mi código de ejemplo here.
que estoy experimentando el mismo problema. Todavía no hay solución? – samvermette
Yo también. Alguien tiene esto funcionando? – V1ru8
¿Recibió alguna respuesta? – Jingwei