簡體   English   中英

我怎樣才能像音樂播放器一樣制作倒數計時器?

[英]How can I make a countdown timer like in a music player?

我有一個標簽,它的值為“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!--
}

好吧,通過編寫代碼。 這不是“教我如何編程”網站。它是一個網站,您可以在其中發布有關您編寫的代碼遇到的特定問題的問題。

簡而言之,請執行以下操作:

記錄你的結束時間

let endInterval = NSDate.timeIntervalSinceReferenceDate() + secondsToEnd

創建一個重復的計時器,每秒觸發一次。

每次觸發時,計算到 endInterval 剩余的秒數。 計算剩余分鍾數為

Int((endInterval-nowInterval)/60)

計算剩余秒數為

Int(endInterval-nowInterval)%60

還有新的(iOS 8)類NSDateComponentsFormatter ,我已經閱讀了一些但沒有使用過。 我相信這會自動為您生成格式化的計時器間隔,例如 hh:mm:ss。 您將使用我上面概述的相同方法,但不是自己計算分鍾和秒,而是使用NSDateComponentsFormatter

你應該看看 NSDate 屬性timeIntervalSinceNow 您只需要使用 NSDate 方法dateByAddingTimeInterval將未來日期設置為結束日期,如下所示:

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))
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM