2010-09-10 13 views
6

Come è possibile impostare l'orientamento corretto di MPMediaPickerController?MPMediaPickerControllo orientamento su iPad

Ho restituito SI in shouldAutorotateToInterfaceOrientation, ma ho un frame non valido per Landscape (se mostri MPMediaPickerController in Portrait prima e viceversa).

Ho ruotato il mio dispositivo in modo caotico e qualche volta ho impostato il frame per correggere se stesso! Ho trovato il metodo per impostare il frame ruotando - è necessario ruotare a 180 gradi. Ad esempio, se hai una buona cornice in Verticale, quando ruoti su Orizzontale - hai una cattiva cornice (da Portatait), ma se ruoti su un altro paesaggio (a 180 gradi), quindi imposta su Orizzontale ... Perché ?

Come posso impostare il fotogramma dopo la rotazione sempre corretto?

saluti,

risposta

-1

qui è un po 'di codice di esempio si può provare uno, dopo la rotazione è necessario impostare la visualizzazione dei media palyer nel centro di self.view, qui alcuni esempi di codice ... è necessario aggiungere MediaPlayer Framework in un primo 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]; 

credo che funziona bene, questo è per la modalità orizzontale per il ritratto dobbiamo impostare telaio secondo telaio ritratto come ..

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

dopo che dobbiamo impostare al centro di vista.

+0

Questo è irrilevante per la domanda. La domanda richiede MPMediaPickerController, non MPMoviePlayerController. Sono 2 cose diverse. E MPMediaPickerController non ha una proprietà di trasformazione. – GeneCode

+0

@Rocotilos Il selettore non può, ma la vista dei raccoglitori, ex: MPMediaPickerController.view.trasforma –

+0

Yup I badlook la parte "view". Grazie per la segnalazione. – GeneCode

2

Non è sicuro se siete interessati nella soluzione o no, dal momento che lei ha chiesto questo nel 2010. In ogni caso, dopo un paio di ricerche ecco cosa ho trovato:

  1. MPMediaPickerController NON SUPPORTA orientamento orizzontale.

  2. Per fare in modo che MPMediaPicker appaia correttamente nell'orientamento orizzontale, possiamo utilizzare PopOverController. Fondamentalmente, creiamo un pop-over e inseriamo il selettore in esso. PopOverController, se visualizzato correttamente da rootViewController, seguirà effettivamente l'orientamento del dispositivo.

Ecco il codice approssimativo. Funziona, ma ha bisogno di un po 'di pulizia. Probabilmente è meglio controllare se il popover è nullo o no, altrimenti si impilerà su se stesso ogni volta che l'utente tocca il pulsante.

- (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 po 'più di nota: questa IBAction è collegata a un pulsante della barra degli strumenti.

0

sto semplicemente spingendo sul mio controller di navigazione:

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

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

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

Concesso questo funziona solo nel contesto di un controller di navigazione, ma funziona ed è semplice!