如何在开始倒计时时不断减少一个值?

How to decrease a value constantly when countdown is started?

我想用这段代码合并一些东西。我的目标是在标签中添加一个价格值,该价格值在倒计时开始时每秒不断减少。例如:CurrentPrice - DiscountPerSecond 在第一秒,然后 CurrentPrice - DiscountPerSecond*2 在第二秒等等。直到倒计时结束。

var timerCounter:NSTimeInterval!

   func updateTime(interval: NSTimeInterval) -> String {

        let interval = Int(interval)

        let seconds = interval % 60

        let minutes = (interval / 60) % 60

        let hours =  interval / 3600


        return String(format: "%02d:%02d:%02d", hours, minutes, seconds)

    }




    func startTimer(hour:Int) {
        timerCounter = NSTimeInterval(hour * 60 * 60)
        let aSelector : Selector = "onTimer:"
        NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: aSelector, userInfo: nil, repeats: true)


    }


    func onTimer(timer:NSTimer!) {
        countdownShow.text = updateTime(timerCounter)
        timerCounter!--

        if (timerCounter == 0) {
            timer.invalidate()
            countdownShow.text = "Event Closed!"
        }
    }

一些注意事项:

  1. 您应该存储一个固定的结束日期并根据需要从当前时间计算时间间隔,而不是从时间间隔开始倒计时。
  2. 您应该根据最大折扣除以剩余时间的比例来计算折扣。 (即 price = listPrice - (maximumDiscount * proportionOfTimeElapsed)
  3. 您应该使用NSDateComponentsFormatter格式化剩余时间。