Как вы знаете, когда я играю в фильм с MPmoviePlayerController, MoviePlayer должен показывать ActivityIndicatorView в центре фильма MoviePlayer'view. Теперь, я поместил пользовательский activityIndicatorView в свою программу, я просто хочу скрыть или удалить ActivityIndicatorView MPMoviePlayController, могу ли я это сделать?Скрыть ActivityIndicator в moviePlayerController
ответ
да мы можем!
Я предполагаю, что вы хотите, чтобы показать идентификатор активности во время загрузки вашего фильма, а не во время его воспроизведения? Я просто предполагаю, что и продолжаю ...
в 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
меня делать то, что я хочу просто позволить activeIndicator из moviePlayerViewController никогда не показывают, потому что я уже добавить activeIndicator сам – ben
Ах я думаю, что я понимаю, ты сейчас. решение будет состоять в том, чтобы СКРЫТЬ ваш плеер, пока LoadState Movieplayer не будет равен MPMovieLoadStatePlayable, а затем снова отобразит игрока. тем временем вы можете отобразить свой пользовательский загрузчик. – samsam