iOS/Swift 어플 따라하기

[Swift] 뮤직 플레이어, 홈화면에서 플레이어 화면 띄우기

Chafle 2022. 3. 22. 22:53
반응형
홈화면에서 곡을 클릭하면 곡 띄우기
할 일
1. 플레이어뷰컨트롤러 스토리보드 가져오기
2. 뷰컨트롤러를 찾아서 PlayerVC에 PlayerViewController로 캐스팅
3. 프리젠트 (헤더뷰가 있다면 헤더뷰에도 똑같이 이행)
4. 플레이어뷰 곡정보 표시 및 재생

 


1. 플레이어 뷰 컨트롤러 스토리 보드 가져오기

 let playerStoryboard = UIStoryboard.init(name: "Player", bundle: nil)

// 스토리보드 이름 Player에서 UIStoryboard를 가져옵니다.

 


반응형

 

2. SimplePlayer를 스토리 보드

guard let playerVC = playerStoryboard.instantiateViewController(withIdentifier: "PlayerViewController") as? PlayerViewController else { return }

//player뷰컨으로 캐스팅

// instantiateViewController는 여러가지 뷰컨트롤러들중에 가져올 뷰컨트롤러를 구분하기 위한 메서드입니다.

       

let item = trackManager.tracks[indexPath.item]

// 트랙매니저의 인덱스 패스 아이템에 있는 인댁스에 해당하는 아이템을 가져옵니다.

 

playerVC.simplePlayer.replaceCurrentItem(with: item)

//playerVC에 simpleplayer로 곡을 갈아끼우기 

// simplePlayer는 이전 시간에 만든 싱글톤 객체

 

https://accompani-i.tistory.com/141

 

[Swift] 뮤직 플레이어 코드 / 싱글 톤 객체 만들기

싱글톤 객체 만들기 싱글 톤 객체는 플레이어를 매번 생성하는 것이 아니고 하나만 만들고 객체로 불러서 사용 하는 것입니다. static let shared = SimplePlayer()  let simplePlayer = SimplePlayer.shared..

accompani-i.tistory.com

 


3. 프리젠트 (헤더뷰가 있다면 헤더뷰에도 똑같이 이행)

 present(playerVC, animated: true, completion: nil)

 


 

4. 플레이어뷰 곡정보 표시 및 재생

 

extension PlayerViewController {

    func updateTrackInfo() {

        guard let track = simplePlayer.currentItem?.convertToTrack() else { return }

        thumbnailImageView.image = track.artwork

        titleLabel.text = track.title

        artistLabel.text = track.artist

 //받은 곡을 가지고 플레이어뷰컨트롤에 필요한 정보 업데이트를 해줍니다.

 

func updatePlayButton() {

        if simplePlayer.isPlaying {

            let configuration = UIImage.SymbolConfiguration(pointSize:  40)

            let image = UIImage(systemName: "pause.fill", withConfiguration: configuration)

            playControlButton.setImage(image, for: .normal)

        } else {

            let configuration = UIImage.SymbolConfiguration(pointSize:  40)

            let image = UIImage(systemName: "play.fill", withConfiguration: configuration)

            playControlButton.setImage(image, for: .normal)

        }

    }

 // 플래이 중이라면 눌렀때 퍼즈 아이콘으로 바꾸고 퍼즈누르면 플레이 아이콘으로 바꿔주는 실행문 입니다.

 

play.fill

 

pause.fill

 

반응형