iOS에서 날짜를 표현하는 UI는 대부분 Date Picker를 사용합니다.
import UIKit
class DatePickerModeViewController: UIViewController {
@IBOutlet weak var picker: UIDatePicker!
@IBAction func dateChanged(_ sender: UIDatePicker) {
print(sender.date)
}
override func viewDidLoad() {
super.viewDidLoad()
picker.datePickerMode = .dateAndTime
picker.locale = Locale(identifier: "ko_KR")
picker.minuteInterval = 1
picker.date = Date()
picker.setDate(Date(), animated: true) // 날짜를 설정할때 애니메이션 효과를 적용하고 싶다면 setDate 속성을 사용
// picker.minimumDate
// picker.maximumDate
// picker.countDownDuration = 60
// 캘린더와 타임존 속성은 코드로만 설정할 수 있습니다,.
// picker.calendar
// picker.timeZone
}
}
버튼을 누르면 설정한 시간이 count되면서 Label에 표시
0초가 되면 타이머 종료, 효과음 재생
import UIKit
import AudioToolbox
class CountDownTimerViewController: UIViewController {
@IBOutlet weak var timeLabel: UILabel!
@IBOutlet weak var picker: UIDatePicker!
var remainingSeconds = 0 // 남은 시간 저장할 속성 선언, 0으로 초기화
@IBAction func start(_ sender: Any) {
timeLabel.text = "\(Int(picker.countDownDuration))"
remainingSeconds = Int(picker.countDownDuration)
Timer.scheduledTimer(withTimeInterval: 1, repeats: true) { (timer) in
self.remainingSeconds -= 1
self.timeLabel.text = "\(self.remainingSeconds)"
// repeats -> false를 전달하면 1번만 실행하고 종료함
if self.remainingSeconds == 0 {
timer.invalidate()
AudioServicesPlaySystemSound(1315)
} // 남은 시간이 0초면 타이머 종료, 효과음 재생
}
}
override func viewDidLoad() {
super.viewDidLoad()
picker.countDownDuration = 60
}
}