如何在音乐播放器中制作倒数计时器?

我有一个标签,它的值是“03:48”。

我想像一个音乐播放器倒计时。 我怎样才能做到这一点?

03:48 03:47 03:46 03:45 … 00:00

var musictime =3:48 func stringFromTimeInterval(interval: NSTimeInterval) -> String { let interval = Int(interval) let seconds = interval % 60 let minutes = (interval / 60) return String(format: "%02d:%02d", minutes, seconds) } func startTimer() { var duration=musictime.componentsSeparatedByString(":") //split 3 and 48 var count = duration[0].toInt()! * 60 + duration[1].toInt()! //224 second timerCounter = NSTimeInterval( count ) NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: "onTimer:", userInfo: nil, repeats: true) } @objc func onTimer(timer:NSTimer!) { // Here is the string containing the timer // Update your label here //println(stringFromTimeInterval(timerCounter)) statusLabel.text=stringFromTimeInterval(timerCounter) timerCounter!-- } 

你应该看看NSDate属性timeIntervalSinceNow 。 您只需要使用NSDate方法dateByAddingTimeInterval将未来date设置为endDate,如下所示:

 class ViewController: UIViewController { @IBOutlet weak var timerLabel: UILabel! var remainingTime: NSTimeInterval = 0 var endDate: NSDate! var timer = NSTimer() override func viewDidLoad() { super.viewDidLoad() remainingTime = 228.0 // choose as many seconds as you want (total time) endDate = NSDate().dateByAddingTimeInterval(remainingTime) // set your future end date by adding the time for your timer timer = NSTimer.scheduledTimerWithTimeInterval(0.1, target: self, selector: "updateLabel", userInfo: nil, repeats: true) // create a timer to update your label } func updateLabel() { timerLabel.text = endDate.timeIntervalSinceNow.mmss } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } } // you will need this extension to convert your time interval to a time string extension NSTimeInterval { var mmss: String { return self < 0 ? "00:00" : String(format:"%02d:%02d", Int((self/60.0)%60), Int(self % 60)) } var hmmss: String { return String(format:"%d:%02d:%02d", Int(self/3600.0), Int(self / 60.0 % 60), Int(self % 60)) } } 

那么,通过编写代码。 这不是一个“教我怎样编程的网站,而是一个网站,你可以通过你写的代码发布关于你遇到的具体问题的问题。

总之,尽pipe做到以下几点:

logging你的结束时间

 let endInterval = NSDate.timeIntervalSinceReferenceDate() + secondsToEnd 

创build一个每秒触发一次的重复计时器。

每次启动时,计算endInterval的剩余秒数。 计算剩下的分钟数

 Int((endInterval-nowInterval)/60) 

计算剩余秒数

 Int(endInterval-nowInterval)%60 

也有新的(到iOS 8)类NSDateComponentsFormatter ,我已经读了一下,但没有使用。 我相信会自动生成像hh:mm:ss这样的格式化定时器间隔。 您可以使用上面概述的相同方法,但不要自己计算分钟和秒,而要使用NSDateComponentsFormatter