¿Cómo hacer que Progressbar (UISlider) funcione dinámicamente en mi aplicación?

Posible duplicado:
UISlider para controlar AVAudioPlayer

Estoy tratando de desarrollar una aplicación de reproductor de audio simple para iPhone, necesito implementar la barra de progreso que debe ejecutarse de acuerdo con la duración de la canción (file multimedia). ¿Cómo puedo lograr esto? ¿Puedo usar el control deslizante con el timer? Cualquier ayuda se agradece por adelantado, gracias.

Si está reproduciendo su audio con AVPlayer , puede usar su **addPeriodicTimeObserverForInterval**: método para actualizar su UISlider. Por ejemplo, si el nombre de su control deslizante es playerScrubber :

  AVPlayerItem *newPlayerItem = [[AVPlayerItem alloc] initWithAsset:<your asset>]; AVPlayer* player = [[AVPlayer alloc] initWithPlayerItem:newPlayerItem]; CMTime interval = CMTimeMake(33, 1000); // 30fps id playbackObserver = [player addPeriodicTimeObserverForInterval:interval queue:dispatch_get_current_queue() usingBlock: ^(CMTime time) { CMTime endTime = CMTimeConvertScale (player.currentItem.asset.duration, player.currentTime.timescale, kCMTimeRoundingMethod_RoundHalfAwayFromZero); if (CMTimeCompare(endTime, kCMTimeZero) != 0) { double normalizedTime = (double) player.currentTime.value / (double) endTime.value; playerScrubber.value = normalizedTime; } }]; 

Y más tarde cuando hayas terminado:

 [player removeTimeObserver:playbackObserver]; 

¡Buena suerte!

Yo diría que sí, un UISlider es tu mejor amigo. Eso es lo que usa el iPod también. Tendrá que modificar ta bit para indicar el progreso visualmente. Haga un timer que muestre la position de su reproducción y actualice el valor del control deslizante en consecuencia. Puede hacer que el valor mínimo del control deslizante sea 0 y el valor máximo el time de reproducción en segundos.

Eche un vistazo a esta publicación aquí en Stack Overflow, tiene una muy buena demostración: UISlider con ProgressView combinado

Si usa AVAudioPlayer, entonces tiene una propiedad llamada currentTime. Puede asignar su valor al valor UIProgressBar como:

 progressBar.value=myPlayer.currentTime; 

Deberá configurar un timer para actualizar constantemente el progreso.