iphone - MPMoviePlayerController reorientación vertical a horizontal y de nuevo a vertical(iOS 4.1)
uiinterfaceorientation (2)
Desde iOS 3.2, la clase MPMoviePlayerController permite incrustar una película en la jerarquía de vistas. Ahora me enfrento a este problema: creo mi vista de retrato colocando una instancia de MPMoviePlayerController. Cuando el usuario toca el botón "pantalla completa", esta vista ingresa en el modo de pantalla completa, pero la vista permanece en vertical. Cuando el usuario gira el dispositivo, la vista de película a pantalla completa no se gira automáticamente ya que mi aplicación prohíbe la orientación de la interfaz horizontal. Por lo tanto, para permitir la rotación automática de la vista de pantalla completa del reproductor de películas, cambié el controlador de mi vista debería Deber Autenticación a Interfaz de Autorista: método para devolver SÍ a modo horizontal si, y solo si, el reproductor de películas está en modo de pantalla completa. Esto funciona perfectamente: cuando el usuario ingresa en pantalla completa y luego gira para poner el paisaje en horizontal, el reproductor se gira automáticamente para poner en horizontal y llena toda la pantalla.
// Override to allow orientations other than the default portrait orientation.
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
// Return YES for supported orientations
//return (interfaceOrientation == UIInterfaceOrientationPortrait);
if(UIInterfaceOrientationIsPortrait(interfaceOrientation)) {
return(YES);
}
if(UIInterfaceOrientationIsLandscape(interfaceOrientation)) {
return([movieController isFullscreen]);
}
return(NO);
}
Ahora el problema surge cuando toco el botón "Listo" en la vista de pantalla completa mientras permanezco en el paisaje. La pantalla completa se cierra y luego lo que veo es mi vista original autorotada, pero no quiero esta rotación automática.
Una solución parcial, pero no aceptable, es escuchar "MPMoviePlayerDidExitFullscreenNotification" y, si la interfaz se gira a horizontal, forzar la reorientación para usar la función privada y no documentada:
[[UIDevice currentDevice] setOrientation:UIDeviceOrientationPortrait]
Esto funciona pero no es aceptable ya que el uso de este método está prohibido.
Intenté forzar la orientación usando [[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationPortrait]
pero como estoy en una barra de pestañas, esto no funciona (la Barra de barra de notas sigue siendo de tamaño horizontal).
Gracias por tu ayuda
Puedes usar un controlador de vista separado para MPMovieplayer. No tienes que anular el
(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
en el controlador de vista original.
Si está utilizando MPMoviePlayerViewController , todo ya está bien configurado para usted, ya que el método shouldAutorotateToInterfaceOrientation:
devolverá SÍ de forma predeterminada. Puede usarlo como una subvista o presentarlo modalmente llamando
presentMoviePlayerViewControllerAnimated:
Tal vez un problema un poco diferente, pero la solución puede ser la misma.