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?

Foi útil?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top