AVAudioPlayer отображение времени - PullRequest
4 голосов
/ 26 августа 2010

У меня есть простой mp3, играющий через AVAudioPlayer, и я хочу показать, сколько времени осталось.

Я знаю, что ответ включает в себя вычитание AVAudioPlayer.duration из AVAudioPlayer.currentTime, но я не знаю, как реализовать функцию, которая вычисляет ее во время воспроизведения (я думаю, что onEnterFrame в Actionscript) В настоящее время currentTime является статическим, то есть нулем.

Ответы [ 2 ]

12 голосов
/ 26 августа 2010

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

// Place this where you start to play
NSTimer * myTimer = [NSTimer scheduledTimerWithTimeInterval:1.0
                                                     target:self
                                                   selector:@selector(updateTimeLeft)
                                                   userInfo:nil
                                                    repeats:YES];

И создайте метод для обновления вашего пользовательского интерфейса:

- (void)updateTimeLeft {
    NSTimeInterval timeLeft = self.player.duration - self.player.currentTime;

    // update your UI with timeLeft
    self.timeLeftLabel.text = [NSString stringWithFormat:@"%f seconds left", timeLeft];
}
1 голос
/ 12 апреля 2019

Я использую его в Swift, и он работает:

// this for show remain time
let duration = Int((player1?.duration - (player1?.currentTime))!)
let minutes2 = duration/60
let seconds2 = duration - minutes2 * 60
durLabel.text = NSString(format: "%02d:%02d", minutes2,seconds2) as String

//this for current time
let currentTime1 = Int((player1?.currentTime)!)
let minutes = currentTime1/60
let seconds = currentTime1 - minutes * 60
curLabel.text = NSString(format: "%02d:%02d", minutes,seconds) as String
...