Nascondi l'indicatore di attività nel controller del lettore di film
-
13-09-2020 - |
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?
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