2010-09-10 13 views
6

¿Cómo puedo establecer la orientación correcta de MPMediaPickerController?MPMediaPickerController orientation en iPad

He devuelto SÍ en shouldAutorotateToInterfaceOrientation, pero tengo el marco incorrecto para Landscape (si muestra MPMediaPickerController en Portrait primero, y viceversa).

¡He girado mi dispositivo caóticamente y en algún momento ha configurado el marco para que se corrija solo! He encontrado el método para establecer el marco al rotar - necesita rotar a 180 grados. Por ejemplo, si tiene un buen marco en Vertical, cuando gira a Horizontal - tiene un marco incorrecto (de Portatait), pero si gira a otro paisaje (a 180 grados), entonces el marco se establece en Paisaje ... ¿Por qué? ?

¿Cómo puedo ajustar el marco después de la rotación correcta siempre?

cordiales,

Respuesta

-1

aquí es un código de ejemplo que puede probar que una, después de la rotación que tiene que definir la vista palyer medios de comunicación en el centro de self.view, aquí algunos ejemplos de código ... hay que añadir Marco MediaPlayer en un primer momento ....

NSString* moviePath = [[NSBundle mainBundle] pathForResource:@"PATRON_LOGO_3" ofType:@"mp4"]; 
NSURL* movieURL = [NSURL fileURLWithPath:moviePath]; 
MPMoviePlayerController *playerCtrl = [[MPMoviePlayerController alloc]initWithContentURL:movieURL]; 
playerCtrl.scalingMode = MPMovieScalingModeFill; 
playerCtrl.controlStyle = MPMovieControlStyleNone; 
[playerCtrl.view setCenter:CGPointMake(240, 160)]; 
[playerCtrl.view setTransform:CGAffineTransformMakeRotation(M_PI/2)]; 
playerCtrl.view.frame = CGRectMake(0, 0, 320, 480); 
[self.view addSubview:playerCtrl.view]; 
[playerCtrl play]; 

creo que funciona bien, esto es para el modo de paisaje para el retrato que tenemos para establecer el marco de acuerdo al marco de retrato como ..

playerCtrl.view.frame = CGRectMake (0, 0, 480, 320);

después de eso tenemos que establecer en el centro de la vista.

+0

Esto es irrelevante para la pregunta. La pregunta requiere MPMediaPickerController, no MPMoviePlayerController. Son 2 cosas diferentes. Y MPMediaPickerController no tiene una propiedad de transformación. – GeneCode

+0

@Rocotilos El selector puede no, pero la vista de los selectores sí, por ejemplo: MPMediaPickerController.view.transformar –

+0

Sí, veo mal la parte "ver". Gracias por señalar eso. – GeneCode

2

No está seguro si está interesado en la solución o no, ya que preguntas esto en 2010. De todos modos, después de unas cuantas búsquedas Esto es lo que encontré:

  1. MPMediaPickerController no es compatible con la orientación horizontal.

  2. Para hacer que MPMediaPicker se vea bien en orientación horizontal, podemos hacer uso de PopOverController. Básicamente, creamos un pop-up e insertamos el selector en él. PopOverController, cuando se muestra correctamente desde el control raízViewController, de hecho seguirá la orientación del dispositivo.

Aquí está el código aproximado. Funciona, pero necesita un poco de limpieza. Probablemente sea mejor que compruebe si el popover es nulo o no, de lo contrario se acumulará solo cada vez que el usuario toque el botón.

- (IBAction)showMediaPicker:(id)sender 
{ 

    MPMediaPickerController *mediaPicker = [[MPMediaPickerController alloc] initWithMediaTypes: MPMediaTypeAny]; 

    mediaPicker.delegate = self; 
    mediaPicker.allowsPickingMultipleItems = YES; 
    mediaPicker.prompt = @"Select musics..."; 


    UIPopoverController *colorPickerPopover = [[[UIPopoverController alloc] 
            initWithContentViewController:mediaPicker] retain];    
    [colorPickerPopover presentPopoverFromBarButtonItem:sender 
            permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];  

} 

Un poco más nota: este IBAction está ligado a un botón de barra de herramientas Barra.

0

Estoy simplemente empujándolo sobre mi controlador de navegación:

MPMediaPickerController *mediaPicker = [[MPMediaPickerController alloc] initWithMediaTypes: MPMediaTypeAny]; 

mediaPicker.delegate = self; 
mediaPicker.allowsPickingMultipleItems = NO; 
mediaPicker.prompt = @"Select songs..."; 

[[self navigationController] pushViewController:mediaPicker animated:YES]; 

Concedido esto sólo funciona en el contexto de un controlador de navegación, pero funciona y es fácil!

Cuestiones relacionadas