Как постоянно уменьшать значение при запуске обратного отсчета?

Я хочу объединить что-то с этим кодом. Моя цель состоит в том, чтобы добавить значение цены в метку, которая постоянно уменьшается каждую секунду, когда начинается обратный отсчет. Например: 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 ответ

Решение

Несколько заметок:

  1. Вместо обратного отсчета от временного интервала вы должны сохранить фиксированную конечную дату и при необходимости рассчитать временные интервалы из текущего времени.
  2. Скидки следует рассчитывать на основе доли максимальной скидки, деленной на долю оставшегося времени. (т.е. price = listPrice - (maximumDiscount * proportionOfTimeElapsed))
  3. Вы должны использовать NSDateComponentsFormatter отформатировать оставшееся время.
Другие вопросы по тегам