Как постоянно уменьшать значение при запуске обратного отсчета?
Я хочу объединить что-то с этим кодом. Моя цель состоит в том, чтобы добавить значение цены в метку, которая постоянно уменьшается каждую секунду, когда начинается обратный отсчет. Например: 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 ответ
Решение
Несколько заметок:
- Вместо обратного отсчета от временного интервала вы должны сохранить фиксированную конечную дату и при необходимости рассчитать временные интервалы из текущего времени.
- Скидки следует рассчитывать на основе доли максимальной скидки, деленной на долю оставшегося времени. (т.е.
price = listPrice - (maximumDiscount * proportionOfTimeElapsed)
) - Вы должны использовать
NSDateComponentsFormatter
отформатировать оставшееся время.