본문 바로가기

프로젝트일기

[스파르타코딩 2주차] 라면타이머만들기

 

 

 

스파르타 코딩 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()
            }
            
        }
    }
    
}