Вопрос

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

Это было полезно?

Решение

да, мы можем!

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

в 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.

надеюсь, я смог бы помочь
ваше здоровье
сэм

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top