1. TimeOberver
2. 시간 정보 업데이트
3. 슬라이더 정보 업데이트
4. seeking
1. TimeObserver
updatePlayButton()
updateTime(time: CMTime.zero)
timeObserver = simplePlayer.addPeriodicTimeObserver(forInterval: CMTime(seconds: 1, preferredTimescale: 10), queue: DispatchQueue.main, using: { time in
self.updateTime(time: time)
})
//곡에 해당하는 현재 시간을 받아서 업데이트 시키기
//CMTime(seconds: 1, preferredTimescale: 10) //= 0.1초 시간(기준시간)과 스케일(어떻게 분할 시킬 거냐)
//CMtime은 Core Media AVFoundation하위에 있는 CoreMedia에서 제공하는 툴을 사용하는 겁니다.
//queue: DispatchQueue.main UIlabel을 0.1초마다 업데이트 시키는데, UIlebel은 mainThread공간에서 변경이 돼야 하는데, 메인스레드한테 0.1초마다 알려주겠다는 의미입니다.
2. 시간정보 업데이트 하기
func updateTime(time: CMTime) {
currentTimeLabel.text = secondsToString(sec: simplePlayer.currentTime)
// 플레이어 객체에서 커런트 타임 가져오기 -ex. 3.1234 >> 00:03
totalDurationLabel.text = secondsToString(sec: simplePlayer.totalDurationTime)
// 토탈 시간 가져오기 - ex. 39.2045 >> 00:39
3. 슬라이더 정보 업데이트 하기
if isSeeking == false {
timeSlider.value = Float(simplePlayer.currentTime/simplePlayer.totalDurationTime)
}
4. Seeking하기
guard let currentItem = simplePlayer.currentItem else { return }
let position = Double(sender.value)
// 0~1 사이의 값으로 표현해줍니다.
let seconds = position * currentItem.duration.seconds
let time = CMTime(seconds: seconds, preferredTimescale: 100)
// ex. 90.1235초인데 더블타입이다 보니 길어질 수 있지만 00.00만 쓰겠다는 표현
simplePlayer.seek(to: time)
}
'iOS > Swift 어플 따라하기' 카테고리의 다른 글
[Swift] SearchAPI를 구현해 보자. (2) | 2022.03.28 |
---|---|
[Swift]SearchBar 키보드 내려주기, ViewController와 해야 할 일 (2) | 2022.03.24 |
[Swift] 뮤직 플레이어, 홈화면에서 플레이어 화면 띄우기 (0) | 2022.03.22 |
[Swift] 뮤직 플레이어 코드 / 싱글 톤 객체 만들기 (2) | 2022.03.22 |
[Swift] MVVM Design Pattern (2) | 2022.03.15 |