Пользовательский ползунок прогресса в MPMoviePlayer

Есть ли способ настроить внешний вид или, по крайней мере, положение ползунка воспроизведения фильма в MPMovidePlayer?


person Borut Tomazin    schedule 27.12.2012    source источник
comment
Я думаю, что в Mpmovieplayer по умолчанию есть ползунок прогресса фильма. нет?   -  person Vishal    schedule 27.12.2012
comment
Он имеет значение по умолчанию. Но он не может быть изменен или подвижен. Желание иметь над ним контроль...   -  person Borut Tomazin    schedule 27.12.2012
comment
Я думаю, что нет решения, что мы добавили его на настраиваемый слайдер. Я также использовал его в одном из своих приложений, и я также не могу найти решение этой проблемы...   -  person Vishal    schedule 27.12.2012
comment
Вы знаете, как это сделано в новом приложении Youtube?   -  person Borut Tomazin    schedule 27.12.2012
comment
Нет, чувак, я понятия не имею об этом...   -  person Vishal    schedule 27.12.2012


Ответы (3)


Скройте существующие элементы управления с помощью MPMovieControlStyle, установите для этого параметра значение MPMovieControlStyleNone.

Теперь add ваш custom control в MPMoviePlayer's представлении.

См. пример uislider-to-control-avaudioplayer, поскольку он такой же, как MPMoviePlayer имеет currentPlaybackTime

См. ссылку mpmovieplayercontroller-buffering-state.

См. mpmovieplayercontroller-when-will-i -узнайте, что-загрузка-файла-доступа.

person Paresh Navadiya    schedule 27.12.2012
comment
Это хорошо, но как создать собственный скроллер с информацией о текущей позиции и буферизации...? - person Borut Tomazin; 27.12.2012
comment
как когда-либо создавался пользовательский элемент управления для AVAudioPlayer? Здесь подразумевается то же самое - person Paresh Navadiya; 27.12.2012
comment
Спасибо, посмотрю. Но меня все еще беспокоит контроль буферизации. Где я могу получить информацию об этом? - person Borut Tomazin; 27.12.2012
comment
Проверьте это: stackoverflow.com/questions/9550813/ - person Paresh Navadiya; 27.12.2012
comment
Также есть еще одно свойство для проверки: stackoverflow.com/q/10346327/384864 - person Borut Tomazin; 28.12.2012

Для этого вам нужно сделать свой собственный слайдер. например, вы можете скрыть индикатор выполнения MPMoviePlayerController и создать свой собственный индикатор выполнения, вы можете скрыть индикатор выполнения MPMoviePlayerController с помощью этого кода

moviePlayerController.controlStyle  = MPMovieControlStyleNone;

Затем вы можете создать собственный индикатор выполнения UISlider *progressbar;

[progressbar setMinimumTrackImage:[UIImage imageNamed:@"min.png"] forState:UIControlStateNormal];//you can set the background for which you have progressed the video
[progressbar setMaximumTrackImage:[UIImage imageNamed:@"max.png"] forState:UIControlStateNormal];//you can set the background for which you have left the video
[progressbar setThumbImage:[UIImage imageNamed:@"thumb.png"] forState:UIControlStateNormal];//you can set the thumb image for you progress bar.

Это будет ползунок, вы можете обновить положение ползунка в потоке.

person Ahsan    schedule 27.12.2012
comment
Будут ли уведомления о текущем положении трека или мне придется делать это самому? Как насчет буферизации трека, могу ли я получить информацию о буферизации? - person Borut Tomazin; 27.12.2012
comment
вы можете обновить время ползунка, получив текущее время в потоке с помощью этого элемента управления moviePlayerController.currentPlaybackTime. - person Ahsan; 27.12.2012
comment
Вы должны сделать это самостоятельно. может быть, есть и другой способ, но я говорю вам, что я использовал. - person Ahsan; 27.12.2012

вот код для прогресса слайдера, такого как MPMoviePlayerController

«Используйте NSTimer для плавного перемещения ползунка в качестве индикатора выполнения MPMoviePlayerController»

// вы можете изменить scheduleTimerWithTimeInterval в соответствии с вашими потребностями

[NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(updateSlider) userInfo:nil repeats:YES];

«Установите для currentPlaybackTime значение ползунка»

- (void)updateSlider {
      slider1.value = self.moviePlayerController.currentPlaybackTime;
    }
person Bhupendrasingh Lohar    schedule 26.02.2016