[Do it!] 알람 시계 앱

CoCoral·2023년 8월 19일
0

Do it!

목록 보기
5/25
post-thumbnail

Do it! 스위프트로 아이폰 앱 만들기
04장 도전! Misson 알람 시계 만들기

📱 실행 화면 📱

⇨ 선택한 시간과 현재 시간이 같아지면 1분동안 배경색이 빨간색으로 바뀌었다가 1분이 지나면 다시 흰색으로 돌아온다.


💻 소스 코드 작성하기

class ViewController: UIViewController {
    let timeSelector: Selector = #selector(ViewController.updateTime)
    let interval = 1.0
    
    //추가 코드
    var alarmTime: String?
  • 선택한 시간을 저장할 변수 추가하기

@IBAction func changeDatePicker(_ sender: UIDatePicker) {
        let formatter = DateFormatter()
        formatter.dateFormat = "yyyy-MM-dd HH:mm EEE"
        lblPickerTime.text = "선택시간: " + formatter.string(from: sender.date)
        
        //추가 코드
        formatter.dateFormat = "yyyy-MM-dd HH:mm"
        alarmTime = formatter.string(from: sender.date)
    }
  • formatter 의 날짜 형식을 분 단위까지로 변경
  • alarmTime 에 선택시간 저장하기

@objc func updateTime() {
        let date = Date()
        let formatter = DateFormatter()
        formatter.dateFormat = "yyyy-MM-dd HH:mm:ss EEE"
        lblCurrentTime.text = "현재시간: " + formatter.string(from: date)
        
        //추가 코드
        formatter.dateFormat = "yyyy-MM-dd HH:mm"
        let currentTime = formatter.string(from: date)
        if alarmTime == currentTime {
            view.backgroundColor = UIColor.red
        }
        else {
            view.backgroundColor = UIColor.white
        }
    }
  • formatter 의 날짜 형식을 분 단위까지로 변경
  • currentTime 에 현재시간 저장하기
  • alarmTime 과 currentTime이 같을 때 뷰의 배경색 빨간색으로 설정하기
  • 다르다면 뷰의 배경색 흰색으로 설정하기
  • 1분동안 유지되어야 하는 것이 문제의 목적인데 시간 비교를 분 단위로 하므로 따로 count 같은 변수를 사용할 필요가 없다.

💻 ViewController.swift 전체 소스 코드

import UIKit

class ViewController: UIViewController {
    let timeSelector: Selector = #selector(ViewController.updateTime)
    let interval = 1.0
    
    var alarmTime: String?
    
    @IBOutlet var lblCurrentTime: UILabel!
    @IBOutlet var lblPickerTime: UILabel!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        
        Timer.scheduledTimer(timeInterval: interval, target: self, selector: timeSelector, userInfo: nil, repeats: true)
    }

    @IBAction func changeDatePicker(_ sender: UIDatePicker) {
        let formatter = DateFormatter()
        formatter.dateFormat = "yyyy-MM-dd HH:mm EEE"
        lblPickerTime.text = "선택시간: " + formatter.string(from: sender.date)
        
        formatter.dateFormat = "yyyy-MM-dd HH:mm"
        alarmTime = formatter.string(from: sender.date)
    }
    
    @objc func updateTime() {
        let date = Date()
        let formatter = DateFormatter()
        formatter.dateFormat = "yyyy-MM-dd HH:mm:ss EEE"
        lblCurrentTime.text = "현재시간: " + formatter.string(from: date)
        
        formatter.dateFormat = "yyyy-MM-dd HH:mm"
        let currentTime = formatter.string(from: date)
        if alarmTime == currentTime {
            view.backgroundColor = UIColor.red
        }
        else {
            view.backgroundColor = UIColor.white
        }
    }
}
profile
언젠간 iOS 개발자가 되겠지

0개의 댓글