2

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

ответ

7

да мы можем!

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

в 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 установлено значение да (если вы сделаете это, вы не должны заботиться о сокрытии и скрывая контроль.

Остальное просто, просто добавьте свою активность. Обозначить на панели просмотра вашего MPMovieViewController.

надежды я мог бы помочь
приветствий
SaM

+0

меня делать то, что я хочу просто позволить activeIndicator из moviePlayerViewController никогда не показывают, потому что я уже добавить activeIndicator сам – ben

+0

Ах я думаю, что я понимаю, ты сейчас. решение будет состоять в том, чтобы СКРЫТЬ ваш плеер, пока LoadState Movieplayer не будет равен MPMovieLoadStatePlayable, а затем снова отобразит игрока. тем временем вы можете отобразить свой пользовательский загрузчик. – samsam