Question

Supposons que l'utilisateur appuie sur un bouton et que la vidéo commence à jouer. Désormais, lorsque la vidéo est lue, elle reste toujours en mode plein écran.

La vidéo doit être lue en mode portrait (mais normalement, la vidéo est lue en mode paysage). Comment puis-je faire cela?

Était-ce utile?

La solution

@interface MPMoviePlayerController (extend) 
 -(void)setOrientation:(int)orientation animated:(BOOL)value; 
@end 

moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:movieUR]; 
[moviePlayer setOrientation:UIDeviceOrientationPortrait animated:NO]; 
if (moviePlayer) 
{ 
    [self.moviePlayer play]; 
} 

Cette solution sera rejetée par Apple, car setOrientation pour le lecteur de film est l’API privée. Soyez prudent, mais cela peut fonctionner sur les iPhones Jailbroke.

Autres conseils

Juste une mise à jour, le dernier SDK pour iPhone 3.2+ autorisera désormais les programmeurs à afficher la vidéo dans la taille et l'orientation souhaités. Un nouveau MPMoviePlayerView est fourni, qui est une propriété de MPMoviePlayerController. pouvez ajouter une sous-vue à votre vue.

D'après les documents documentés, je ne pense pas que cela soit possible en utilisant le lecteur multimédia intégré

Essayez ceci. J'ai trouvé quelque chose de nouveau.

@interface MPMoviePlayerController (extend)
-(void)setOrientation:(int)orientation animated:(BOOL)value;
@end

moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:movieUR];
[moviePlayer setOrientation:UIDeviceOrientationPortrait animated:NO];
if (moviePlayer)
{
    [self.moviePlayer play];
}

Voici ce que j'ai fait. Ajoutez NSNotification pour vous informer de la fin du préchargement de la vidéo.

- (void)playVideoUrl:(NSString *)videoUrl {
    NSURL *url = [NSURL URLWithString:videoUrl];
    MPMoviePlayerController* theMovie=[[MPMoviePlayerController alloc]   
             initWithContentURL:url]; 
    [[NSNotificationCenter defaultCenter] addObserver:self 

    //MPMoviePlayerContentPreloadDidFinishNotification
    [[NSNotificationCenter defaultCenter] addObserver:self                           
                       selector:@selector(myMovieFinishedPreloading:)                                            
                           name:MPMoviePlayerContentPreloadDidFinishNotification                                                
                         object:theMovie]; 


    // Movie playback is asynchronous, so this method returns immediately. 
    [theMovie play]; 
     }

Sélecteur de rappel:

-(void)myMovieFinishedPreloading:(NSNotification*)aNotification  {
    NSArray *windows = [[UIApplication sharedApplication] windows];

    UIWindow *moviePlayerWindow = nil;
    if ([windows count] > 1) 
    {
        moviePlayerWindow = [[UIApplication sharedApplication] keyWindow];
    }

    CGAffineTransform transform = CGAffineTransformMakeScale(0.5, 0.5);
    transform = CGAffineTransformRotate(transform, -90.0f*M_PI/180.0f);
    [moviePlayerWindow setTransform:transform];

 }
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top