вы не обновляете прогресс индикатора выполнения во время воспроизведения.Когда вы начинаете воспроизводить звук, вы устанавливаете индикатор выполнения на 1, на 2, на 3, на 4, на 5 ... на 100%.Все не выходя из текущего runloop.Это означает, что вы увидите только последний шаг, полный индикатор выполнения.
Вы должны использовать NSTimer для обновления индикатора выполнения.Примерно так:
- (IBAction)play:(id)sender {
/* ... */
[self.player play];
self.timer = [NSTimer scheduledTimerWithTimeInterval:0.23 target:self selector:@selector(updateProgressBar:) userInfo:nil repeats:YES];
}
- (void)updateProgressBar:(NSTimer *)timer {
NSTimeInterval playTime = [self.player currentTime];
NSTimeInterval duration = [self.player duration];
float progress = playTime/duration;
[self.progressView setProgress:progress];
}
при остановке воспроизведения отключить таймер.
[self.timer invalidate];
self.timer = nil;