2017-05-29 10 views
0

現在のAudioPlayerの期間に基づいてUILabelのアップデートを試行しています。私はタイマーを使いたくないのです。私のアプリの中では、人々が小さな時間で自分自身を録音するからです。&半分の秒が重要なので、私は本当にtimer()を使いたくありません。代わりに、私がしようとしているのは、現在の時刻が自動的に自動的に更新されるというものです。しかし私は、これはあなたを助けるかもしれない。ここAudio Playerの現在時刻に基づいてUILabelを更新する

は、私はそれについてつもりかですが、明らかに私は

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 { 

      } 
     } 
    } 

答えて

0

それを正しくやっていないのです...それを把握するように見えることはできません!アウトレットをshowTimeLblに接続し、試してみてください。

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 
} 
関連する問題