2010-08-26 14 views
4

J'ai une simple lecture de mp3 via AVAudioPlayer et je veux être en mesure d'afficher combien de temps il reste.Affichage de l'heure de AVAudioPlayer

Je sais que la réponse comprend la soustraction AVAudioPlayer.duration de AVAudioPlayer.currentTime mais je ne sais pas comment implémenter une fonction qui le calcule pendant qu'il joue (comme un onEnterFrame dans Actionscript je suppose). A l'heure actuelle, currentTime est statique, c'est-à-dire zéro.

Répondre

12

Je voudrais aller pour un NSTimer. Programmez-le pour s'exécuter toutes les secondes pendant que le média est lu et ainsi vous pouvez garder votre interface utilisateur à jour avec le temps restant.

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

Et créer la méthode pour mettre à jour l'interface utilisateur vous:

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

    // update your UI with timeLeft 
    self.timeLeftLabel.text = [NSString stringWithFormat:@"%f seconds left", timeLeft]; 
} 
+0

Merci VFN, il semble que la solution parfaite qu'un seul problème que j'ai trouvé: La minuterie ne se déclenche pas! – daidai

+2

Ah oui il suffit d'utiliser 'scheduledTimerWithTimeInterval' au lieu de' timerWithTimeInterval' – daidai

+0

Oui, vous auriez besoin de le déclencher ou d'utiliser la méthode planifiée. C'est édité maintenant! – vfn