헉 한달만에 2주차를..ㅎㅎ
1. 타이머 생성과 애니메이션 추가하기
타이머를 보여주는 Label, 타이머 시작버튼, 타이머 남은 시간, 타이머 객체 생성
@IBOutlet weak var timerLabel: UILabel!
@IBOutlet weak var timerButton: UIButton!
var secondsLeft: Int = 180
var timer: Timer?
(타이머 버튼의 corner를 둥글게)
override func viewDidLoad() {
super.viewDidLoad()
timerButton.layer.cornerRadius = 10
}
타이머 초기화 - invalidate() 함수
func resetTimer() {
timer?.invalidate()
timer = nil
timerButton.setTitle("타이머 시작하기", for: UIControl.State.normal)
}
타이머 객체의 시간이 바뀔 때마다 timerLabel의 시간을 업데이트
시간을 업데이트 할 때마다 애니메이션 효과 추가
몇개 해보니 바뀔 때의 애니메이션은 앞에 transition 붙은 옵션들을 선택해야 바뀌는듯 하다. (showHideTransitionViews 빼고)
func updateTimerLabel() {
let minutes = self.secondsLeft / 60
let seconds = self.secnodsLeft % 60
// 10초 아래일 때 타이머 색을 빨간색으로 변경
if self.secondsLeft < 10 {
self.timerLabel.textColor = UIColor.red
}
else {
self.timerLabel.textColor = .black
}
// 애니메이션 효과 추가
UIView.transition(with: self.timerLabel, duration: 0.3, options: .transitionFlipFromBottom {
if self.secondsLeft > 0 {
self.timerLabel.text = String(format: "%02d:%02d", minutes, seconds)
}
else {
self.timerLabel.text = "시간 끝!"
}
} completion: { Bool in }
}
타이머 동작하기 - scheduledTimer(withTimeInterval: , repeats: ) 함수
@IBAction func timerButtonClicked(_ sender: Any) {
if timer != nil {
resetTimer()
return
}
self.timerButton.setTitle("타이머 종료하기", for: .normal)
self.secondLeft = 180 + self.segmentControl.selectedSegmentIndex * 60
self.updateTimerLabel()
// 타이머: 1초마다 호출
timer = Timer.scheduledTimer(withTimeInterval: 1, repeats: true) { t in
self.secondsLeft -= 1
self.updateTimerLabel()
if self.secondsLeft == 0 {
self.resetTimer()
}
}
}
2. Segmented Control 추가하기
segmentControl 객체
@IBOutlet weak var segmentControl: UISegmentedControl!
valueChangedSegmentControl 함수
@IBAction func valueChangedSegmentControl(_ sender: Any) {
self.resetTimer()
self.secondsLeft = 180 + self.segmentControl.selectedSegmentIndex * 60
self.updateTimerLabel()
}
'iOS > COURSE' 카테고리의 다른 글
[스파르타코딩클럽] iOS 앱개발 기초반 5주차 (0) | 2021.07.29 |
---|---|
[스파르타코딩클럽] iOS 앱개발 기초반 4주차 - 1 (0) | 2021.07.21 |
[스파르타코딩클럽] iOS 앱개발 기초반 3주차 (0) | 2021.07.18 |
[스파르타코딩클럽] iOS 앱개발 기초반 1주차 (2) | 2021.06.12 |
IOS 프로그래밍을 위한 스위프트 기초 (야곰) 수강완료 / 후기 (2) | 2021.01.15 |