Skip to content

Instantly share code, notes, and snippets.

@uknowmeright
Last active January 7, 2019 21:52
Show Gist options
  • Save uknowmeright/0a1d3c68e99860b53844ccb812eb85e8 to your computer and use it in GitHub Desktop.
Save uknowmeright/0a1d3c68e99860b53844ccb812eb85e8 to your computer and use it in GitHub Desktop.
timer for IOS #tags: timer, swift, mytimer
// MyTimer.swift
//
// Created by Paul on 10/11/18.
// Copyright © 2018 Paul Lehn. All rights reserved.
//
import Foundation
class MyTimer: NSObject {
var startTime: TimeInterval! = TimeInterval()
var time: Double! = 40
var timer = Timer()
var timerEndedCallback: (() -> Void)!
var timerInProgressCallback: ((_ elapsedTime: Double) -> Void)!
func startTimer(timerEnded: @escaping () -> Void, timerInProgress: ((_ elapsedTime: Double) -> Void)!) {
if !timer.isValid {
let aSelector : Selector = #selector(MyTimer.updateTime)
timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: aSelector, userInfo: nil, repeats: true)
startTime = NSDate.timeIntervalSinceReferenceDate
timerEndedCallback = timerEnded
timerInProgressCallback = timerInProgress
}
}
@objc func updateTime() {
var currentTime = NSDate.timeIntervalSinceReferenceDate
var elapsedTime = currentTime - startTime
var seconds = time - elapsedTime
if seconds > 0 {
elapsedTime -= TimeInterval(seconds)
timerInProgressCallback(elapsedTime)
} else {
timer.invalidate()
timerEndedCallback()
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment