Domanda

Modifica : se vi imbattete in questo e volete sapere come ho finalmente risolto ho rinunciato a quel codice qui sotto alla fine e fatto questo:

-(void)playMovieAtURL:(NSURL*)theURL{
    mediaPlayer = [[MPMoviePlayerViewController alloc] initWithContentURL:theURL];

    [self presentMoviePlayerViewControllerAnimated:mediaPlayer];
    mediaPlayer.view.backgroundColor = [UIColor blackColor];

}

Original post:

Questo è il mio codice -. L'ho preso dal sito di Apple, quindi non dovrebbe essere un problema

Si corre in un UITableViewController sul metodo didSelectRowAtIndexPath.

Quando si seleziona la riga del video inizia a suonare - l'audio sarà almeno - ma non c'è immagine. Qualsiasi idea del perché questo è? Ho incluso il quadro.

Il video è uno fuori dal sito Web di Apple (un video FaceTime) che ho usato per il test.

 -(void)playMovieAtURL:(NSURL*)theURL{



        MPMoviePlayerController* theMovie =

        [[MPMoviePlayerController alloc] initWithContentURL: theURL];



        theMovie.scalingMode = MPMovieScalingModeAspectFill;

        theMovie.controlStyle = MPMovieControlStyleNone;



        // Register for the playback finished notification

        [[NSNotificationCenter defaultCenter]

         addObserver: self

         selector: @selector(myMovieFinishedCallback:)

         name: MPMoviePlayerPlaybackDidFinishNotification

         object: theMovie];



        // Movie playback is asynchronous, so this method returns immediately.

        [theMovie play];

    }
È stato utile?

Soluzione

Il comportamento di MPMoviePlayerController cambiato in OS 3.2 - è necessario aggiungere esplicitamente vista del giocatore di film per la gerarchia di visualizzazione ora - usando qualcosa come:

[aView addSubview:moviePlayerController.view];
moviePlayerController.view.frame = aView.frame;

In alternativa è possibile utilizzare un MPMoviePlayerViewController (nuova in 3.2) per gestire la vista.

Se state rivolte a entrambe le pre- e post-3.2 dispositivi (ad esempio iOS 3.1 e 4.0), allora avrete bisogno di alcuni codice condizionale per determinare il sistema operativo il codice è in esecuzione su e gestire di conseguenza. Ho usato questo in progetti precedenti:

if ([moviePlayerController respondsToSelector:@selector(setFullscreen:animated:)]) {
    // Running on OS 3.2 or above
    // Code to add to a view here...
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top