Music Player NBC With Swift

Related tags

Audio MusicPlayerNBC
Overview

MusicPlayer

  1. Xcode
  • command + shift + Y -> Debug 창 띄우기
  • command + R -> App 실행
  • command + . -> App 중지
  • ctrl + option + commadn + return(enter) -> Assistant
  1. 프로젝트 이미지 추가하기
  • 에셋 카탈로그

    • Assets.xcassets 라는 폴더가 자동으로 생성된다.
    • 프로젝트에서 사용되는 다양한 에셋을 관리하며, 이를 에셋 카탈로그라고 한다.
  • 에셋 카탈로그 구성

    • Asset catalog
    • Group
    • Asset
    • Asset name
    • Asset files
    • Attributes
    • Asset variations: 에셋 파일들의 집합
  • 앱 시닝

    • 앱 시닝(app thinning) 이란
      • 애플리케이션이 디바이스에 설치될 때 앱 스토어와 운영체제가 그 디바이스의 특성에 맞게 설치하도록 하는 설치 최적화 기술
      • 이를 통해 설치용량을 최소화하고 다운로드의 속도를 향상시킬 수 있다
      • 앱 시닝의 기술 구성요소는 슬라이싱(slicing), 비트코드(bitcode), 주문형 리소스(on-demand resource)가 있다
    • 슬라이싱(slicing)이란
      • 애플리케이션이 지원하는 다양한 디바이스에 대한 여러 조각의 애플리케이션 번들(app bundle)을 생성하고 디바이스에 알맞는 조각을 전달하는 기술
      • 개발자가 애플리케이션 전체 버전을 Connect에 업로드 하게 되면, 앱 스토어에는 각 디바이스 특성에 다양한 버전의 조각들이 생성된다
      • 사용자가 애플리케이션을 설치할때 전체 버전이 아닌 슬라이싱된 조각들 중 사용자의 디바이스의 가장 최합한 조각이 다운로드되어 설치된다
      • 에셋 카탈로그에서 관리하는 이미지들은 자동으로 적용이 된다
  • 빠른 검색

    • shfit + command + o
  • Object Libary

    • command + shift + l
  1. IBOutlet, IBAction 인터페이스 객체와 연결
  • IBOutlet 과 인터페이스 빌더 요소 연결

    • 코드로 먼저 IBOutlet을 생성한 후 인터페이스 빌더의 Outlet Inspector를 통해 연결
    • 코드로 먼저 IBOutlet을 생성한 후 인터페이스 빌더에서 View Controller 우클릭 후 팝업에서 연결
    • 인터페이스 빌더에서 코드로 끌어당겨 연결
  • 인터페이스 빌더의 객체를 코드와 연결(IBAction)

    • 인터페이스 빌더의 객체에서 발생한 액션과 코드 연결(IBAction)
      • IBAction으로 객체에서 발생하는 액션을 코드로 연결해 사용자 동작에 상호 작용할 수 있도록 함
  • 컨트롤 이벤트와 액션과의 관계

    • UIKit에는 UIButton, UI Stepper 등 UIControl을 상속받은 다양한 컨트롤 클래스가 있다
    • 컨트롤 객체에 발생한 다양한 이벤트 종류를 특정 액션 메서드에 연결할 수 있다
    • 컨트롤 객체에서 특정 이벤트가 발생하면, 미리 지정된 타겟의 액션을 호출하게 된다
  • 컨트롤 이벤트의 종류

    • 컨트롤 이벤트는 UIControl에 Event라는 타입으로 정의되어 있다
    • 컨트롤 객체에 발생할 수 있는 이벤트의 종류
      • touchDown: 컨트롤을 터치했을 때 발생
      • touchDownRepeat: 컨트롤을 연속으로 터치 할 때 발생
      • touchDragInside: 컨트롤 범위 내에서 터치한 영역을 드래그 할 때 발생
      • touchDragOutside: 터치 영역이 컨트롤 바깥쪽에서 드래그 할 때 발생
      • touchDragEnter: 터치 영역이 컨트롤의 일정 여역 바깥쪽으로 나갔다가 다시 들어왔을 때 발생
      • touchDragExit: 터치 영역이 컨트롤의 일정 영역 바깥쪽으로 나갔을 때 발생
      • touchUpInside: 컨트롤 영역 안쪽으로 터치 후 뗐을때 발생
      • touchUpOutside: 컨트롤 영역 안쪽에서 터치 후 컨트롤 밖에서 뗐을 때 발생
      • toutchCancel: 터치를 취소하는 이벤트(touchUp 이벤트가 발생하지 않음)
      • valueChanged: 터치를 드래그 및 다른 방법으로 조작하여 값이 변경되었을때 발생
      • primaryActionTriggered: 버튼이 눌릴때 발생하는 이벤트(IOS보다는 tvOS에서 사용)
      • editingDidBegin: UITextField에서 편집이 시작될 때 호출되는 이벤트
      • editingChanged: UITextField에서 값이 바뀔 때마다 호출되는 이벤트
      • editingDidEnd: UITextField에서 외부객체와의 상호작용으로 인해 편집이 종료되었을 때 발생하는 이벤트
      • editingDidEndOnExit: UITextField의 편집상태에서 키보드의 return 키를 터치했을 때 발생하는 이벤트
      • allTouchEvents: 모든 터치 이벤트
      • allEditingEvents: UITextField에서 편집작업의 이벤트
      • applicationReserved: 각각의 애플리케이션에서 프로그래머가 임의로 지정할 수 있는 이벤트 값의 범위
      • systemReserved: 프레임워크 내에서 사용하는 예약된 이벤트 값의 범위
      • allEvnets: 시스템 이벤트를 포함한 모든 이벤트
  • UIButton

    • 버튼과 메서드 연결 방법

      • addTarget(_:action:for:) 메서드 사용
      • 인터페이스 빌더에서 연결 @IBAction
    • 버튼과 연결되는 메서드 형식

      • func doSomething()
      • func doSomething(sender: UIButton)
      • func doSomething(sender: UIButton, forEvent event: UIEvent)
    • 버튼의 상태

      • 버튼의 상태는 5가지로 표현된다
      • default, highlighted, focused, selected, disabled
      • 버튼의 상태는 조합된 상태일 수 있다
    • 버튼의 주요 프로퍼티

      • enum UIButtonType: 버튼의 유형
      • 버튼의 유형에 따라 기본적인 외형과 동작이 달라진다
      • 한번 생성된 버튼의 유형은 이후 변경 불가
      • 가장 많이 사용하는 유형은 Custom 과 System 이지만 다른 유형( Detail Disclosure, Info Light, Info Dark, Add Contct)도 있음
      • var titleLabel: UILabel?: 버튼 타이틀 레이블
      • var imageView: UIImageView?: 버튼의 이미지 뷰
      • var tintColor: UIColor!: 버튼 타이틀과 이미지의 틴트 칼라
    • 버튼 주요 메서드

      • func setTitle(String?, for: UIControlState) : 특정 상태의 버튼의 문자열 설정
      • func title(for: UIControlState) -> String? : 특정 상태의 버튼의 문자열 반환
      • func setImage(UIImage?, for: UIControlState): 특정 상태의 버튼 이미지 설정
      • func image(for: UIControlState): 특정 상태의 버튼 이미지 반환
      • func setBackgroundImage(UIImage?, for: UIControlState): 특정 상태의 백그라운드 이미지 설정
      • func backgroundImage(for: UIControlState) -> UIImage : 특정 상태의 백그라운드 이미지 반환
      • func setTitleColor(UIColor?, for: UIControlState): 특정 상태의 문자열 색상 설정
      • func setAttributedTitle(NSAttributedString?, for: UIControlState) : 특정 상태의 attributed 문자열 설정
  • UILabel

    • 주요 프로퍼티
      • var numberOfLines: 문자를 나태내는 최대 라인 수
        • 문자열을 모두 표시하는 데 필요한 만큼 해을 사용하려면 0으로 설정. 기본값은 1
        • 설정한 문자열이 최대 라인 수를 초과하면 lineBreakMode 프로퍼티의 값에 따라 적절히 잘라서 표현
        • adjustsFontSizeToFitWidth 프로퍼티를 활용하면 폰트 사이즈를 레이블의 넓이에 따라 자동으로 조절해줌
      • var baselineAdjustment: UIBaselineAdjustment: 문자열이 Autoshrink 되었을 때의 수직 정렬 방식
        • Align Baseline: 문자가 작아졌을 떄 기존 문자열의 기준선에 맞춤
        • Align Center: 문자가 작어졌을 때 작아진 문자의 중앙선에 맞춤
        • None: 문자가 작아졌을 때 기존 문자열의 위쪽 선에 맞춤
      • var lineBreakMode: NSLineBreakMode: 레이블의 경계선을 벗어나는 문자열에 대응하는 방식
        • Character wrap: 여러 줄 레이블에 주로 적용되며, 글자 단위로 줄 바꿈을 겨정
        • Word wrap: 여러 줄 레이블에 주로 적용되며, 단어 단위로 줄 바꿈 결정
        • Trucate head: 한 줄 레이블에 주로 적용되며, 앞쪽 테스트를 자르고 ...으로 표시
        • Trucate middle: 한 줄 레이블에 주로 적용되며, 중간 텍스트를 자르고 ...으로 표시
        • Trucate tail: 한 줄 레이블에 주로 적용되며, 끝쪽 텍스트를 자르고 ...으로 표시(기본값)
  • UISlider

    • 주요 프로퍼티
      • var minimumValue: Float, var maximumValue: Float: 슬라이더 양 끝단값
      • var value: Float: 슬라이더 현재 값
      • var isContinuous: Bool: 슬라이더 연속적인 값 변화에 따라 이벤트 역시 연속적으로 호출할 것인지 여부
      • var minumumValueImage: UIImage?, var maximumValueImage: UIImage?: 슬라이더 양끝단의 이미지
      • var thumbTintColor: UIColor?: thumb의 틴트 색상
      • var minimumTrackTintColor: UIColor?, var maximumTrackTintColor: UIColor?: thumb를 기준으로 앞쪽 트랙과 뒤쪽 트랙의 틴트 색상
  • AVFoundation

    • 다양한 Apple 플래폼에서 사운드 및 영상 미디어의 처리, 제어 가져오기 및 내보내기 등 광범위한 기능을 제공하는 프레임워크
    • 주요 기능
      • 미디어 재생 및 편집
      • 디바이스 카메라와 마이크를 이용한 영상 녹화 및 사운드 녹음
      • 시스템 사운드 제어
      • 문자의 음성화
    • AVAudioPlayer Class
      • AVAudioPlayer 클래스는 파일 또는 메모리에 있는 사운드 데이터를 재생하는 기능을 제공한다
    • AVAudioPlayer 주요 기능
      • 파일 또는 메모리에 있는 사운드 재생
      • 파일 재생 시간 길이의 제한없이 사운드 재생
      • 여러 개 사운드 파일 동시 재생
      • 사운드의 재생 속도 제어 및 스테레오 포지셔닝
      • 앞으로 감기와 뒤로 감기 등의 기능을 지원해 사운드 파일의 특정 지점 찾기
      • 현재 재생 정보 데이터 얻기
      • 사운드 반복재생 기능
    • 주요 프로퍼티
      • var isPlaying: Bool: 사운드가 현재 재생되고 있는지 아닌지 여부
      • var volume: Float: 사운드의 볼륨값, 최소 0.0 ~ 최대 1.0
      • var rate: Float: 사운드의 재생 속도
      • var numberOfLoops: Int: 사운드 재생 반복 횟수
        • 기본값은 0으로 사운드 1회 재생 후 자동 종료
        • 양수값으로 설정시 설정값+1 회 재생
        • 음수값으로 설정시 stop메소드가 호출 될떄까지 무한 재생
      • var duration: TimeInterval: 사운드의 총 재생 시간(초 단위)
      • var currentTime: TimeInterval: 사운드의 현재 재생 시각(초 단위)
      • protocol AVAudioPlayerDelegate: 사운드 재생완료, 재생 중단 및 디코딩 오류에 응당할 수 있는 프로토콜
    • 주요 메서드
      • func init(contentOf: URL): 특정 위치에 있는 사운드 파일로 초기화
      • func init(data: Data): 메모리에 올라와 있는 데이터를 이용해 초기화
      • func play(): 사운드 재생
      • func play(atTime: TimeInterval): 특정 지점에서 재생
      • func puase(): 사운드 일시 정지
      • func stop(): 사운드 재생 정지
  • Timer

    • Timer 클래스는 일정한 시간 가격이 지나면 지정된 메시지를 특정 객체로 전달하는 기능을 제공
    • Timer의 특징
      • 타이머는 런 루프(run loops)에서 작동
      • 타이머를 생성할 때 반복 여부를 지정
        • 비 반복 타이머: 한 번 실행된 다음 자동으로 무효화
        • 반복 타이머: 동일한 런 루프에서 특정 TimeInterval 간격으로 실행, 반복되는 타이머 기능을 정지하려면 invalidate() 메소드를 호출하여 무효화 해야함
    • Timer 주요 프로퍼티
      • var isValid: Bool: 타이머가 현재 유효한지 아닌지 여부
      • var fireDate: Date: 다음에 타이머가 실행될 시각
      • var timeInterval: TimeInterval: 타이머의 실행 시간 간격(초 단위)
You might also like...
MusicKit is a framework and DSL for creating, analyzing, and transforming music in Swift.

MusicKit MusicKit is a framework and DSL for creating, analyzing, and transforming music in Swift. Examples Functional harmony let C5 = Pitch(midi: 72

Cool Animated music indicator view written in Swift
Cool Animated music indicator view written in Swift

Cool Animated music indicator view written in Swift. ESTMusicIndicator is an implementation of NAKPlaybackIndicatorView in Swift for iOS 8. 本人著作的书籍《La

Analyser BPM in Swift for your music/sounds/records, whatever..
Analyser BPM in Swift for your music/sounds/records, whatever..

BPM-Analyser Analyser BPM in Swift for your music/sounds/records, whatever.. Powered with Superpowered Preview: How To: Copy theese files to your proj

MusicTheoryKit: a swift module that provides an easy-to-use API for most commonly used music terms

MusicTheoryKit Introduction MusicTheoryKit is a Swift framework that provides an easy-to-use API for most commonly used music terms. Create notes, ass

MusicScore - A music score library with MusicPart, Measure, Note, Pitch and Tempo representations in swift structs
MusicScore - A music score library with MusicPart, Measure, Note, Pitch and Tempo representations in swift structs

MusicScore A music score library with MusicPart, Measure, Note, Pitch and Tempo

A real-time, votable, democratized music queue on iPad and iPhone using Spotify
A real-time, votable, democratized music queue on iPad and iPhone using Spotify

Queue'd Music Queue'd is the best way to enjoy music with your friends. Add your favorite songs to a shared music queue at your favorite bars, restaur

MuVis is a macOS, iOS, iPadOS app for real-time music visualization.
MuVis is a macOS, iOS, iPadOS app for real-time music visualization.

MuVis MuVis is an open-source multiplatform app (using SwiftUI, Swift, and Xcode) for music visualization. It renders informative (and musically usefu

YiVideoEditor is a library for rotating, cropping, adding layers (watermark) and as well as adding audio (music) to the videos.

YiVideoEditor YiVideoEditor is a library for rotating, cropping, adding layers (watermark) and as well as adding audio (music) to the videos. YiVideoE

🎶 Control Apple Music right from your macOS menu bar.
🎶 Control Apple Music right from your macOS menu bar.

About Music Bar is macOS application that places music controls right in your menu bar. Installation Download and unzip the latest release. Drag the a

Owner
davidyoon891122
모바일 앱, 자바 백앤드 개발자 공개 Repo는 샘플, 테스트용
davidyoon891122
iOS music player app that downloads music from the internet, even YouTube

About YouTag is an iOS music player app that downloads music from the internet, even YouTube, and manages it in a local library. Music videos can also

null 263 Jan 8, 2023
Music Player for iOS which looks & feels like classic player

Prodigal Music Player APP looks and feels like a classic device. Bring back the good old player to life. Screenshots Home Page Album Gallery Home Page

bob.sun 40 Nov 11, 2022
AudioKit Sample Player (ROM Player) - EXS24, Sound Font, Wave Player

AudioKit ROM / Sample Player Welcome to the official AudioKit example of a sample-based music instrument written in Swift. It can be modified to play

AudioKit 500 Dec 27, 2022
A pure Swift Spotify Music App in Apple Music style

HBMusic A pure Swift Spotify Music App in Apple Music style. How to run pod inst

haoboxuxu 6 Dec 29, 2021
Classical music front-end for Apple Music: iOS app

concertino_ios Concertino is a classical music front-end for Apple Music. It's splitted in several projects. This one provides only the iOS app. (Ther

Open Opus 107 Dec 22, 2022
🅿️ PandoraPlayer is a lightweight music player for iOS, based on AudioKit and completely written in Swift.

Made by Applikey Solutions Find this project on Dribbble Table of Contents Purpose Features Supported OS & SDK Versions Installation Usage Demo Releas

Applikey Solutions 1.1k Dec 26, 2022
Fully functional music player which is written in swift programming language

Music Player Source Code Fully functional Music Player Application Source code that is written in Swift 4.1, Xcode 9.3 Introduction Music Player for i

bpolat 243 Nov 9, 2022
Beautiful Music Player app built using SwiftUI to demonstrate Neumorphic design pattern and MVVM architecture.

Beautiful Music Player app built using SwiftUI to demonstrate Neumorphic design pattern ?? and MVVM architecture ?? . Made with love ❤️ by Sameer Nawaz

Sameer Nawaz 120 Jan 4, 2023
Custom iOS music player view

InteractivePlayerView Custom iOS music player view Screen About InteractivePlayerView is an IBDesignableView (Custom View) which has its own progress,

AhmetKeskin 273 Nov 11, 2022
MusicPlayer - Beautiful Music Player app built using SwiftUI to demonstrate Neumorphic design pattern and MVVM architecture

Skailer ?? Beautiful Music Player app built using SwiftUI to demonstrate Neumorp

null 23 Dec 10, 2022