2017-05-29 2 views
0

Je tente d'avoir ma mise à jour UILabel en fonction de la durée de l'heure actuelle de l'AudioPlayer. Je ne veux pas utiliser une minuterie, parce que dans mon application, les gens vont enregistrer eux-mêmes avec de petites durées & les demi-secondes sont importantes, donc je ne voudrais pas vraiment utiliser timer(). Au lieu de cela, ce que je tente de faire, c'est juste d'avoir la mise à jour de l'étiquette basée sur ce que l'heure actuelle est automatiquement. Je ne peux pas semblent toutefois le comprendre ...Avoir la mise à jour UILabel basée sur l'heure actuelle du lecteur audio

Voici comment je vais à ce sujet, mais il est clair que je ne le fais pas correctement

var audioPlayer : AVAudioPlayer! 

    var audioTime = UILabel() { 
     didSet { 
      do { 
       try audioPlayer = AVAudioPlayer(contentsOf: audioURL!) 
       let currentTime = Int(audioPlayer.currentTime) 
       let minutes = currentTime/60 
       let seconds = currentTime - minutes * 60 
       audioTime.text = (NSString(format: "%02d:%02d", minutes,seconds) as String) 

      } catch { 

      } 
     } 
    } 

Répondre

0

Cela pourrait vous aider! Connectez Outlet à showTimeLbl et essayez.

class ViewController: UIViewController { 

@IBOutlet weak var showTimeLbl: UILabel! 
var timeCount:Int = 0 
var timer:Timer! 

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 
    if(timer != nil) 
    { 
     timer.invalidate() 
    } 
    timer = Timer(timeInterval: 1.0, target: self, selector: #selector(ViewController.timerDidFire), userInfo: nil, repeats: true) 
    RunLoop.current.add(timer, forMode: RunLoopMode.commonModes) 

} 

func timerDidFire() 
{ 
    timeCount += 1 

    showTimeLbl.text = NSString(format: "%02d:%02d:%02d", timeCount/3600,(timeCount/60)%60,timeCount%60) as String 

} 
override func viewWillDisappear(_ animated: Bool) { 
    super.viewWillDisappear(true) 
    timer?.invalidate() 
    timer = nil 
}