![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/OejEP/btsyTrX90K7/94CRBaKKatqpKtI521ikY1/img.png)
내가 구현하는 FLO 앱의 두가지 뷰에는 모두 가사가 들어있으며, 시간에 맞춰 자동으로 스크롤된다. Player 뷰 에서는 두줄을 보여주며 스크롤 되며, 가사 영역을 터치할 경우 가사가 크게 나온다. 1. 기능 분석 플레이어 뷰(좌측) - 오토 스크롤 - 하이라이팅(흰 글씨) - 가운데 정렬 - 유저 터치시 가사뷰로 이동 가사 뷰(우측) - 오토 스크롤 - 하이라이팅(흰 글씨) - 좌측 정렬 - 유저 터치시 해당 영역으로 플레이어 이동 - 유저의 스크롤도 가능 - 가사 컨트롤 버튼 존재 플레이어 뷰의 기능에서 더 확장된 것이 가사 뷰 라고 할 수 있겠다. 동일한 클래스를 사용할 수 있도록 LyricTableView를 만들고, 각 뷰별로 해당하는 옵션을 넣어주도록 하자. 2. 모델 만들기 먼저 테이블 뷰에..
FLO MusicPlayer 앱에서 사용하는 AVPlayer는 음악을 재생시키고, 컨트롤를 하는 핵심 요소로 사용된다. AVPlayer를 어떻게 사용했는지 알아보자 먼저, iOS의 프레임워크들에서 자주 사용했던 자연스럽게 delegate를 채택하려고 했지만, delegate가 AVPlayer에는 없다. 대신, KVO(Key-Value-Observing) 방식으로 AVPlayer의 상태값을 받아올 수 있다. KVO는 존재만 알고 있었던지라, 이번 기회에 공부를 해보았다. KVO 짧은 정리 KVO는 NSObject의 기능으로 willSet, didSet 과 유사하다고 볼 수 있음 프로퍼티의 상태 변화에 대해 '외부' 에서 옵저버를 추가할 수 있음 (willSet, didSet은 내부에서 추가 필요) 외부에서..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bQg5NI/btsyqvfWb92/nGJ2EUrFkOmglhIYK7Kak0/img.png)
그동안 궁금했었던 부분들에 대해 공부하는 시간을 가져보던 중 평소 관심있었던 부분인 뮤직 플레이어를 만들어 보고 싶었다. FLO의 플레이어 뷰를 보면 기능 요구사항은 다음과 같다. - 플레이어 컨트롤 버튼 - 시간에 따른 가사 자동 스크롤 - 가사를 탭 했을 때 해당 부분으로 이동 - 음악 정보(이미지, 곡 정보 등) 사용한 프레임워크와 앱의 구조를 살펴보자 1. AVFoundation AVFoundation은 [ CoreAudio / CoreVideo / CoreMedia / CoreAnimation ] 위에 있는 프레임워크다. Core 패밀리들은 iOS 혹은 MacOS 등에서 하드웨어와 함께 Low-Level 로 동작하는 프레임워크들이고(C 기반), AVFoundation은 Core 패밀리 위에서 멀..
- Total
- Today
- Yesterday
- Xcode15
- 2024년
- openapi-generator
- locale
- 애플워치 데이터 전송
- 소수점
- OAS
- TextField
- demical
- avplayer
- IOS
- easy cue
- auth
- open-api-generator
- swift날짜
- flo
- 회고
- keyboardtype
- AVFoundation
- Swift
- DateFormatter
- 토큰
- retry
- musicplayer
- 애플워치
- Xcode
- KVO
- SwiftUI
- watchOS
- watch connectivity
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |