Ocultar ActivityIndicator em moviePlayerController
-
13-09-2020 - |
Pergunta
Como você sabe, quando eu reproduzo um filme com MPmoviePlayerController, o moviePlayer deve mostrar um ActivityIndicatorView no centro da visualização do moviePlayer.Agora, coloquei um ActivityIndicatorView personalizado em meu programa, só quero ocultar ou remover o ActivityIndicatorView do MPMoviePlayController, posso fazer isso?
Solução
sim, nós podemos!
Acho que o que você quer fazer é mostrar o indicador de atividade enquanto o filme está sendo carregado, não enquanto está sendo reproduzido.Eu apenas assumo isso e continuo...
no SDK 3.2 e superior, todo o MPMoviePlayerController (e MPMoviePlayerViewController) é muito melhor do que nas versões anteriores.Se você ainda usa MPMoviePlayerController, considere mudar para MPMoviePlayerViewController (que é basicamente uma subclasse UIView que encapsula um objeto MPMoviePlayerController).
de qualquer forma, para mostrar e ocultar a visualização do UIActivityindicator, recomendo que você se conecte às notificações que estão sendo enviadas do seu MPMoviePlayerController quando o status de carregamento ou reprodução muda.
alguns deles são:
MPMoviePlayerPlaybackStateDidChangeNotification
MPMoviePlayerLoadStateDidChangeNotification
então você se conecta a esses eventos fazendo isso:
[[NSNotificationCenter defaultCenter] addObserver: self
selector: @selector(loadStateChanged:)
name: MPMoviePlayerLoadStateDidChangeNotification
object: moviePlayerViewController.moviePlayer];
e isto
[[NSNotificationCenter defaultCenter] addObserver: self
selector: @selector(playBackStateChanged:)
name: MPMoviePlayerPlaybackStateDidChangeNotification
object: moviePlayerViewController.moviePlayer];
e dentro de seus manipuladores (playBackStateChanged
e loadStateChanged
)
você pode fazer algo assim:
-(void)playBackStateChanged:(id)sender
{
MPMoviePlaybackState playbackState = [moviePlayerViewController.moviePlayer playbackState];
switch (playbackState) {
case MPMoviePlaybackStateStopped :
break;
case MPMoviePlaybackStatePlaying :
[yourActivityIndicatorView stopAnimating];
break;
case MPMoviePlaybackStateInterrupted :
[yourActivityIndicatorView startAnimating];
break;
}
}
certifique-se de que a propriedade "hidesWhenStopped" (ou similar) do seu IndicatorView esteja definida como sim (se você fizer isso, não precisará se preocupar em ocultar e exibir o controle.
o resto é simples, basta adicionar seu ActivityIndicatorView na visualização do seu MPMovieViewController.
espero poder ajudar
saúde
Sam