Udemy Xylophone App

박중권·2024년 5월 31일
0

Udemy

목록 보기
5/8
post-thumbnail

이번 챕터에서는 버튼을 눌렀을 때 소리가 재생되는 자일로폰 앱을 공부했다.

  1. AVFoundation & AVAudioPlayer
    사운드를 재생할 시에는 AVAudioPlayer 라는 변수를 생성한다.
    그리고 그에 맡는 함수를 생성했다. (그냥 강의를 보고 따라했다!)
import UIKit
import AVFoundation

class ViewController: UIViewController {
    
    var player: AVAudioPlayer!

    override func viewDidLoad() {
        super.viewDidLoad()
    }

    @IBAction func keyPressed(_ sender: UIButton) {
        
        print(sender.currentTitle)
//        print(sender.titleLabel?.text)
        
        playSound()
        
    }
    
    func playSound() {
        let url = Bundle.main.url(forResource: "C", withExtension: "wav")
        player = try! AVAudioPlayer(contentsOf: url!)
        player.play()
                
    }
}

코드에도 보이듯이 AVFoundation이 import되어야 한다.

  1. Interface Builder Action (IBAction)

지금까지 IBAction은 UI만 연결이 되는 줄 알았다.
하지만, 아니었다...
솔직히 이건 정말 깜놀...

사진에 보이는 것처럼, IBAction에 마우스를 올려 놓으면, 모든 버튼들이 연결되었다고 보여주는 것을 확인할 수 있다.

  1. Type Inference

swift는 DataType을 알아내는 능력이 있어서 모든 데이터를 지정해주지 않아도 된다.

var number = 123 //swift는 이미 123을 보고 Int 타입이라는 것을 알고 있다.

var number: Int = 123 //즉 이렇게 타입을 넣어주지 않아도 에러가 안 났던 이유라고 볼 수 있다.

//주의
var number = "abc" //하지만 주의할 점은, 그 데이터 타입을 바꾸지는 못 한다.
  1. Parameter & Argument

이 부분은 코딩을 배우면서 항상 헷갈렸던 부분이다.

func greeting () {

}

//보통 이렇게 함수를 만든다는 것은 알고 있었지만 () 이 자리에 정확히 뭐가 들어가야 하는지는 잘 몰랐다.

//정답은 input이었다. 아래 쉬운 예시로 공부를 했다.

func greeting(whoToGreet: String) {
	 print("Hello \(whoToGreet)")
}

//이러한 방식처럼 parameter인 whoToGreet를 받아서 무언가를 해줘 라고 하는 것과 같다.
//그리고 그 parameter의 타입인 argument도 같이 써줘야 한다!

그럼 선언을 했을 때, 이렇게 input 값을 항상 넣어서 사용할 수가 있다.

  1. 코드 시간차 설정
@IBAction func keyPressed(_ sender: UIButton) {  
    playSound(soundName: sender.currentTitle!)
        
    sender.alpha = 0.5
    print("start")

DispatchQueue.main.asyncAfter(deadline: .now() + 0.2) { //0.2초 후에 실행
	sender.alpha = 1.0
    print("end")
}

강의의 미션으로 등장해서, 검색을 해서 코드를 찾아냈다.

Result:

끝!

profile
Hello World!

0개의 댓글