
스파르타 코딩 iOS앱개발 2주차
라면타이머를 만들었다.


이런 3분짜리 타이머인데
이것을 응용해서
3분, 4분, 5분을 선택하는 옵션을
넣어보는 과제이다.

segmentedControl을 이용해서
3분, 4분, 5분의 옵션을 넣어주고 selectedSegmentIndex로
해당 인덱스에 *60을 해주는게 핵심 알고리즘이었다.
self.secondsLeft = 180 * selectedSegmentIndex *60
근데 나는 3분, 4분 5분이 아닌
3분, 5분, 10분을 해보고 싶었고
if문을 사용해서 selectedSegmentIndex 값에 따라
self.secondsLeft 에 다른 값을 대입했다.
if segment.selectedSegmentIndex == 0{
self.secondsLeft = 180
} else if segment.selectedSegmentIndex == 1{
self.secondsLeft = 300
} else{
self.secondsLeft = 600
}
인덱스가 아닌 값을 받아오는게 있는 줄 알았는데
찾아도 잘 모르겠고... 암튼
selectedSegmentValue는 없는 것 같아서
어쩔수없이 Index조건으로 하게 되었다.

이렇게 값을 다르게 둘 수 있었다.
//
// ViewController.swift
// RamenTimer
//
// Created by 윤소영 on 2021/06/19.
//
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var timerLabel: UILabel!
@IBOutlet weak var timerButton: UIButton!
@IBOutlet weak var segment: UISegmentedControl!
var secondsLeft: Int = 180
var timer: Timer?
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
timerButton.layer.cornerRadius = 5
self.secondsLeft = 180
self.updateTimerLabel()
}
func resetTimer(){
timer?.invalidate()
timer = nil
timerButton.setTitle("타이머 시작하기", for: .normal)
}
func updateTimerLabel(){
var minutes = self.secondsLeft / 60
var seconds = self.secondsLeft % 60
if self.secondsLeft < 10{
self.timerLabel.textColor = UIColor.red
}else{
self.timerLabel.textColor = UIColor.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: { (animated) in
}
}
func updateTimerLeft(){
//3분,5분,10분
if segment.selectedSegmentIndex == 0{
self.secondsLeft = 180
} else if segment.selectedSegmentIndex == 1{
self.secondsLeft = 300
} else{
self.secondsLeft = 600
}
self.updateTimerLabel()
}
@IBAction func segmentValueChanged(_ sender: Any) {
self.resetTimer()
self.updateTimerLeft()
}
@IBAction func timerButtonClicked(_ sender: Any) {
if timer != nil{
resetTimer()
return
}
self.timerButton.setTitle("타이머 종료하기", for: .normal)
self.secondsLeft = 180
self.updateTimerLabel()
timer = Timer.scheduledTimer(withTimeInterval: 1, repeats: true) { (t) in
self.secondsLeft -= 1
self.updateTimerLabel()
if self.secondsLeft == 0{
self.resetTimer()
}
}
}
}
'프로젝트일기' 카테고리의 다른 글
[스파르타코딩 4주차] 링크메모 앱 만들기 (0) | 2021.07.03 |
---|---|
[스파르타코딩 3주차] 피보나치킨앱만들기 (0) | 2021.06.26 |
[스파르타코딩 1주차] 손전등 만들기 (0) | 2021.06.12 |