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 |
댓글