2017-05-29 3 views
0

Ich versuche, mein UILabel-Update basierend auf der aktuellen AudioPlayer-Zeit zu erstellen. Ich möchte keinen Timer verwenden, denn in meiner App werden sich Leute mit kleiner Dauer aufzeichnen & die halben Sekunden sind wichtig, also würde ich nicht wirklich Timer() benutzen wollen. Stattdessen versuche ich, das Label-Update basierend auf der aktuellen Uhrzeit automatisch zu aktualisieren. Ich kann aber nicht scheinen, um es herauszufinden ...UILabel-Update basierend auf der aktuellen Uhrzeit des Audio-Players

Hier ist, wie ich es werde, aber deutlich mache ich es nicht richtig

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 { 

      } 
     } 
    } 

Antwort

0

Dies könnte Ihnen helfen! Verbinde Outlet mit showTimeLbl und versuche es.

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 
} 
Verwandte Themen