Скрыть ActivityIndicator в moviePlayerController - PullRequest
2 голосов
/ 09 июля 2010

Как вы знаете, когда я играю фильм с MPmoviePlayerController, moviePlayer должен показывать ActivityIndicatorView в центре просмотра moviePlayer'а.Теперь я поместил пользовательский ActivityIndicatorView в моей программе, я просто хочу скрыть или удалить ActivityIndicatorView MPMoviePlayController, я могу это сделать?

1 Ответ

7 голосов
/ 09 июля 2010

да, мы можем!

Полагаю, что вы хотите сделать, это показать указатель активности во время загрузки фильма, а не во время его воспроизведения? Я просто предполагаю это и продолжаю ...

в SDK 3.2 и выше, весь MPMoviePlayerController (и MPMoviePlayerViewController) намного лучше, чем в предыдущих версиях. Если вы все еще используете MPMoviePlayerController, вы можете рассмотреть возможность переключения на MPMoviePlayerViewController (который в основном является подклассом UIView, который инкапсулирует объект MPMoviePlayerController).

В любом случае, чтобы показать и скрыть представление UIActivityindicator, я бы порекомендовал вам подключаться к уведомлениям, отправляемым из MPMoviePlayerController при изменении загрузки или состояния воспроизведения.

Вот некоторые из них:

MPMoviePlayerPlaybackStateDidChangeNotification
MPMoviePlayerLoadStateDidChangeNotification 

так что вы подключаетесь к тем событиям, которые делают это:

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

и это

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

и в ваших обработчиках (playBackStateChanged и loadStateChanged)

вы можете сделать что-то вроде этого:

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

    switch (playbackState) {

        case MPMoviePlaybackStateStopped :


            break;

        case MPMoviePlaybackStatePlaying :
            [yourActivityIndicatorView stopAnimating];
            break;

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

убедитесь, что для свойства "hidesWhenStopped" (или аналогичного) вашего IndicatorView установлено значение yes (если вы это сделаете, вам не нужно заботиться о скрытии и скрытии элемента управления.

остальное просто, просто добавьте свой ActivityIndicatorView поверх представления MPMovieViewController.

надеюсь, что смогу помочь
ура
сэм

...