iOS앱만들기

타이머앱 만들기

화찌님 2022. 10. 14. 19:51

<결과>

맥북 화면녹화엔 소리가 첨부되지 않는다.. 3초마다 알림이 뜨는것은 코드를 복사해서 확인할 수 있다.

 

<코드>

//
//  ViewController.swift
//  FirstNewApp
//
//  Created by Allen H on 2021/11/10.
//

import UIKit
import AVFoundation


class ViewController: UIViewController {

    @IBOutlet weak var mainLabel: UILabel!
    
    @IBOutlet weak var slider: UISlider!
    
    // 숫자(선택된 초)를 관리하기 위한 변수
    var number = 0
    // 타이머 객체를 담기 위한 변수
    var timer: Timer?
    
    // 앱의 화면에 들어오면 처음 실행시키는 함수
    override func viewDidLoad() {
        super.viewDidLoad()
        configureUI()
    }
    
    // UI셋팅 함수
    func configureUI() {
        mainLabel.text = "초를 선택하세요"
        slider.value = 0.5
    }
    
    // 슬라이더 값이 바뀔때마다 호출되는 함수
    @IBAction func sliderChanged(_ sender: UISlider) {
        let seconds = Int(sender.value * 60)
        mainLabel.text = "\(seconds) 초"
        number = seconds
    }
    
    // 스타트버튼을 누르면 실행하는 함수
    @IBAction func startButtonTapped(_ sender: UIButton) {
        timer?.invalidate()
        timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(doSomethingAfter1Second), userInfo: nil, repeats: true)
    }
    
    
    
    // 다음 동작의 실행 함수
    @objc func doSomethingAfter1Second() {
        if number > 0 {
            number -= 1
            print(Float(number) / Float(60))
            slider.value = Float(number) / Float(60)
            mainLabel.text = "\(number) 초"
        } else {
            mainLabel.text = "초를 선택하세요"
            number = 0
            //print(number)
            timer?.invalidate()
            AudioServicesPlaySystemSound(SystemSoundID(1000))
        }
    }
    
    // 리셋버튼이 눌리면 실행되는 함수
    @IBAction func resetButtonTapped(_ sender: UIButton) {
        timer?.invalidate()
        mainLabel.text = "초를 선택하세요"
        slider.value = 0.5
        number = 0
    }
    
}

 


<기억할것>

1. 소리나게 하는 법(시스템 사운드)

>>시스템사운드란? 애플에서 제공해주는 사운드

import AVFoundation

AudioServicesPlaySystemSound(SystemSoundID(사운드숫자))

 

2. 해당시간 간격으로 반복실행하는 함수

 

let timer = Timer.scheduledTimer(timeInterval: 반복될 시간간격, target: self(대체로 셀프), selector: #selector(반복될 함수명), userInfo: nil(대체로 닐), repeats: true)

 

selector: #selector(반복될 함수명) >> 여기서 해당하는 함수명은 objc를 달고 선언한다 (#selector함수가 오브젝트c문법)

 


<코드 복습>

 

 

보고 따라한 인강 출처 남깁니당

https://www.inflearn.com/course/스위프트-문법-마스터-스쿨/dashboard