본문 바로가기
iOS/iOS

타이머

by 패쓰킴 2022. 1. 25.
728x90
@IBOutlet weak var authCountLb: UILabel!
    
var timer: Timer?
var time = 180

@IBAction func sendAuthNumTap(_ sender: UIButton) {
        authNumBtn.backgroundColor = UIColor(red: 43, green: 55, blue: 67, alpha: 1)
        time = 180
        startTimer()
    }
    
    // 타이머 카운팅
    @objc func scheduled() {
        if time < 0 {
            stopTimer()
        }
        
        let minutes = time / 60
        let seconds = time % 60
        
        authCountLb.text = String(format: "%02d : %02d초 남음", minutes, seconds )
        time -= 1
    }
    
    //타이머 시작
    func startTimer() {
        if let timers = timer {
            //timer 객체가 nil 이 아닌경우에는 invalid 상태에만 시작한다
            if !timers.isValid {
                timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(scheduled), userInfo: nil, repeats: true)
            }
        } else {
            //timer 객체가 nil 인 경우에 객체를 생성하고 타이머를 시작한다
            timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(scheduled), userInfo: nil, repeats: true)
        }
    }
    
    // 타이머 중지
    func stopTimer() {
        if let timers = timer {
            if timers.isValid {
                timer?.invalidate()
            }
        }
    }

참고:

https://bite-sized-learning.tistory.com/175

https://ghj1001020.tistory.com/757

https://developer.apple.com/documentation/foundation/timer/1408249-isvalid

728x90

'iOS > iOS' 카테고리의 다른 글

CustomView  (0) 2022.02.23
ERROR 모음  (0) 2022.02.17
아이폰 노치 여부 확인 방법  (0) 2022.01.24
navigation bar 숨김 시 swipe  (0) 2022.01.21
Dark mode  (0) 2022.01.12

댓글