2010-09-10 15 views
6

Comment puis-je régler l'orientation correcte de MPMediaPickerController?Orientation MPMediaPickerController sur l'iPad

J'ai retourné YES dans shouldAutorotateToInterfaceOrientation, mais j'ai une mauvaise image pour Landscape (si MPMediaPickerController est affiché dans Portrait d'abord, et inversement).

J'ai fait tourner mon appareil de façon chaotique et parfois réglé pour se corriger! J'ai trouvé la méthode pour régler le cadre en tournant - besoin de tourner à 180 degrés. Par exemple, si vous avez une bonne image dans Portrait, lorsque vous faites pivoter vers Paysage - vous avez une mauvaise image (à partir de Portatait), mais si vous faites pivoter vers d'autres paysages (jusqu'à 180 degrés), réglez Paysage ... Pourquoi ?

Comment puis-je régler le cadre après la rotation correcte toujours?

salutations,

Répondre

-1

est un exemple de code ici, vous pouvez essayer un, après la rotation, vous devez définir l'affichage palyer des médias dans le centre de self.view, voici quelques exemples de code ... vous devez ajouter cadre MediaPlayer tout d'abord ....

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]; 

Je pense que cela fonctionne très bien, cela est pour le mode paysage pour le portrait que nous devons armature selon le cadre portrait comme ..

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

après que nous devons définir au centre de la vue.

+0

Ceci n'est pas pertinent à la question. La question demande MPMediaPickerController, pas MPMoviePlayerController. Ils sont 2 choses différentes. Et MPMediaPickerController n'a pas de propriété de transformation. – GeneCode

+0

@Rocotilos Le sélecteur ne peut pas, mais la vue des sélecteurs le fait, ex: MPMediaPickerController.view.transformer –

+0

Yup je mésestime la partie "vue". Merci d'avoir fait remarquer cela. – GeneCode

2

Je ne sais pas si vous êtes intéressé par la solution ou non, puisque vous avez posé en 2010. Quoi qu'il en soit, après quelques recherches, voici ce que j'ai trouvé:

  1. MPMediaPickerController NE SUPPORTE PAS ORIENTATIONS DU PAYSAGE. Pour que MPMediaPicker apparaisse bien en orientation paysage, nous pouvons utiliser PopOverController. Fondamentalement, nous créons un pop over, et insérons le sélecteur dans celui-ci. PopOverController, lorsqu'il est affiché correctement à partir du rootViewController, suivra en effet l'orientation de l'appareil.

Voici le code approximatif. Cela fonctionne, mais a besoin d'être nettoyé. Probablement mieux que vous vérifiez si le popover est nul ou pas, sinon il va juste s'empiler sur lui-même chaque fois que l'utilisateur appuie sur le bouton.

- (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 peu plus de remarque: cette IBAction est liée à un bouton de barre d'outils.

0

Je suis tout simplement pousser sur mon contrôleur de navigation:

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

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

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

Cédée ne fonctionne que dans le contexte d'un contrôleur de navigation, mais il fonctionne et est simple!