Domanda

Supponiamo che l'utente tocchi un pulsante e la riproduzione del video inizi. Ora, quando il video viene riprodotto, è sempre in modalità a schermo intero.

Il video deve essere riprodotto in modalità verticale (ma normalmente il video viene riprodotto in modalità orizzontale). Come posso farlo?

È stato utile?

Soluzione

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

Questa soluzione verrà rifiutata da Apple, in quanto setOrientation for movie player è l'API privata. Devi stare attento, ma potrebbe funzionare su iPhone Jailbroke.

Altri suggerimenti

Solo un aggiornamento, l'ultimo iPhone SDK 3.2+ consentirà ora ai programmatori di mostrare il video in qualsiasi dimensione e orientamento desiderati, viene fornito il nuovo MPMoviePlayerView, che è una proprietà di MPMoviePlayerController, questa vista avrà il video, che hai può aggiungere come visualizzazione secondaria alla visualizzazione.

Dai documenti documentati non penso che ciò sia possibile utilizzando il lettore multimediale incorporato

Prova questo. Ho trovato qualcosa di nuovo.

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

Ecco cosa ho fatto. Aggiungi NSNotification per avvisarti quando termina il precaricamento del video.

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

Selettore di richiamata:

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

 }
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top