Domanda

Come sapete, quando riprodo film con MPMoviePlayerController, il filmPlayer dovrebbe mostrare un'attivitàNindiaDicatorview al centro del movieplayer ".Ora, ho messo un attività personalizzataIndicatorView nel mio programma, voglio solo nascondere o rimuovere l'attività AttivitàNindiaDicatorview di MPMovieplayController, posso farlo?

È stato utile?

Soluzione

Sì, possiamo!

Immagino che cosa vuoi fare sia mostrare l'idicator di attività mentre il tuo film viene caricato, non mentre viene giocato? Suppongo solo che e continua ad andare ...

In SDK 3.2 E SOPRA, l'intero MPMOVIEPlayerController (e MPMoviePlayervistController) sono molto migliori rispetto alle versioni precedenti. Se si utilizza comunque MPMOviePlayController, potresti prendere in considerazione la possibilità di passare a MPMoviePlayervistController (che è fondamentalmente una sottoclasse UIView che incapsule è un oggetto MPMoviePlayerController).

Comunque, per mostrare e nascondere la vostra vista UIACTITEDYINDICATOR, ti consiglierei di collegarti sulle notifiche che vengono inviate dal tuo MPMoviePlayerController quando il caricamento o PlayStatus cambiano.

Alcuni di questi sono:

MPMoviePlayerPlaybackStateDidChangeNotification
MPMoviePlayerLoadStateDidChangeNotification 
.

Quindi ti collega a quegli eventi facendo questo:

[[NSNotificationCenter defaultCenter] addObserver: self 
                                             selector: @selector(loadStateChanged:) 
                                                 name: MPMoviePlayerLoadStateDidChangeNotification 
                                               object: moviePlayerViewController.moviePlayer];
.

E questo

[[NSNotificationCenter defaultCenter] addObserver: self 
                                             selector: @selector(playBackStateChanged:) 
                                                 name: MPMoviePlayerPlaybackStateDidChangeNotification 
                                               object: moviePlayerViewController.moviePlayer];
.

E all'interno dei tuoi gestori (playBackStateChanged e loadStateChanged)

Puoi fare qualcosa del genere:

-(void)playBackStateChanged:(id)sender
{
    MPMoviePlaybackState playbackState = [moviePlayerViewController.moviePlayer playbackState];

    switch (playbackState) {

        case MPMoviePlaybackStateStopped :


            break;

        case MPMoviePlaybackStatePlaying :
            [yourActivityIndicatorView stopAnimating];
            break;

        case MPMoviePlaybackStateInterrupted :
            [yourActivityIndicatorView startAnimating];
            break;
    }
}
.

Assicurati che la proprietà "hideswhenstopped" (o simile) della tua indenditionView sia impostata su Sì (se lo fai, non devi preoccuparti di nascondersi e non svuotare il controllo.

Il resto è semplice, basta aggiungere la tua attività AttivitàINDicatorView Ontop della vostra vista MPMovieviewController.

spero di poter aiutare Cheers
. sam

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