728x90
안녕하세요.
오늘은 제한 시간을 두고 과제를 수행하는 앱을 위한 카운트다운 타이머를 iOS에서 구현하는 방법을 알아보도록 하겠습니다.
구직 로직은 간단합니다.
타이머 클래스를 이용해서 원하는 초단위가 0이 될때까지 매 1초 마다 1초씩 빼줍니다.
코드는 아래와 같습니다.
import Foundation
import SwiftUI
struct TimeTest : View{
@State private var remainingSeconds = 10 * 60 //10분 타이머 세팅
@State private var isCountdownOver = false //카운트 다운 끝 = false 세팅
var body: some View{
VStack{
CountdownView1(remainingSeconds: $remainingSeconds, isCountdownOver: $isCountdownOver)
}
}
}
struct CountdownView1: View {
@Binding var remainingSeconds: Int //메인 View에서 선언한 변수 사용
@Binding var isCountdownOver: Bool
// 매 1초마다 루프를 돌리는 timer 생성
let timer = Timer.publish(every: 1, on: .main, in: .common).autoconnect()
var body: some View {
Text(timeString(remainingSeconds)) //화면에 보이는 text 설정
.font(.title3)
.onReceive(timer) { _ in
if remainingSeconds > 0 { //0초가 되기 전이면
remainingSeconds -= 1 //1초씩 뺌
} else {
isCountdownOver = true //0초가 되면 isCountdownOver변수를 true로 변경
}
}
}
//초단위로 입력된 remainingSeconds변수를 분과 초 단위로 나눠주기
func timeString(_ seconds: Int) -> String {
let minutes = seconds / 60
let seconds = seconds % 60
return String(format: "%02d:%02d", minutes, seconds)
}
}
실행시 다음과 같은 결과를 얻을 수 있습니다.
'iOS' 카테고리의 다른 글
[iOS][SwiftUI] 달력 만들기 (0) | 2023.07.04 |
---|---|
[iOS][SwiftUI] 스톱워치 만들기 (0) | 2023.06.19 |
[iOS][SwiftUI] Todo 만들기 (0) | 2023.05.24 |
[iOS][SwiftUI] 메모장 만들기 (0) | 2023.05.07 |
[iOS][Swift UI] 계산기 예제 (0) | 2023.04.20 |