AVPlayer를 사용해볼 기회가 생겨서 문서를 정리해보려 합니다. 예전에 비디오 플레이어 프로젝트에 참여했을 때 썼던 기억이 있는데 1년 더 된 것 같네요. 공식문서에 설명된 내용을 정리해보겠습니다. AVPlayer는 플레이어의 전송 동작을 제어하는 인터페이스를 제공하는 객체입니다. AVPlayer는 재생과 미디어 자산(asset)의 타이밍을 관리하는 데 사용되는 컨트롤러 객체입니다. AVPlayer를 사용하여 AVPlayerQuickTime영화 및 MP3 오디오 파일과 같은 로컬 및 원격 파일 기반 미디어와 HTTP 라이브 스트리밍(HLS)을 사용하여 제공되는 시청각 미디어도 재생할 수 있습니다. AVPlayer는 한 번에 하나의 미디어 자산을 재생하기 위한 것입니다. replaceCurrentIte..
아래 설명과 같이 AVPlayer는 상태가 계속해서 변경되는 동적 객체입니다. 플레이어의 상태을 관찰할 수 방법이 두 가지 방법이 존재합니다. (AVPlayer 애플 공식문서 링크에서 확인 가능합니다. developer.apple.com/documentation/avfoundation/avplayer) 그중에서도 일반 상태 관찰을 위해 옵저버를 통해서 상태 변화를 받아보도록 했습니다. 상태 변화를 받기 위해서는 observeValue(forKeyPath:of:change:context:) 메서드를 구현해야 합니다. override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any..
NSLineBreakMode는 총 6가지 케이스가 존재합니다. 오늘은 NSLineBreakMode에서 3가지 byTruncatingHead, byTruncatingTail, byTruncatingMiddle에 대해서 살펴보겠습니다. 그리고 각각이 어떻게 다른지도 비교해보겠습니다. (byWordWrapping, byCharWrapping은 따로 정리하는 걸로) NSLineBreakMode는 컨테이너에 줄이 너무 길어지면 상황에 따라 어떻게 처리할지를 구분해놓은 열거형입니다. Int를 Raw Values로 설정했고 각각의 케이스에 정수를 부여했습니다. 여기서 우리가 볼 것은 3,4,5번입니다. 저는 ...표시가 어디에 갈 것인지로 byTruncatingHead, byTruncatingTail, byTrunc..
오늘은 UICollectionViewCell에 대해서 살펴보겠습니다. 컬렉션 뷰의 단일 데이터 항목입니다. UICollectionViewCell그대로 사용하거나 프로퍼티와 메서드를 추가해 하위 클래스를 사용할 수도 있습니다. 셀의 레이아웃 및 표현되는 것은 컬렉션 뷰 및 해당 레이아웃 객체에서 관리합니다. contentConfiguration이나 backgroundConfiguration을 설정해 셀의 내용과 모양을 구성할 수 있습니다. 또는 데이터 항목의 컨텐츠를 표시하기 위해 ContentView프로퍼티에 하위 뷰를 추가할 수 있습니다. 셀 자체에 하위 뷰를 직접적으로 추가하지 마세요. 셀은 ContentView에 여러 레이어의 콘텐츠를 관리합니다. UICollectionViewCell은 3가지 다른..
오늘은 레이아웃을 다루는 메서드에 대해서 (아래 링크 의역 및) 정리해보려 합니다. layoutIfNeeded vs setNeedsLayout 먼저, iOS앱이 시작되면 시스템 객체는(UIApplication) 메인 스레드에서 메인 런 루프를 돌기 시작합니다. 메인 런 루프는 (예: 유저의 터치) 이벤트를 처리하고 뷰 기반 인터페이스에 대한 업데이트를 처리합니다. 터치, 위치 업데이트, 모션 및 멀티 미디어 제어와 같은 이벤트가 발생하면, 메인 런 루프는 이벤트에 대한 적절한 트리거를 찾아서 적절한 메서드를 호출하는 등 작업을 수행합니다. 이때 모든 이벤트가 처리되고 제어(control)가 메인 런 루프로 돌아가는 시점에 업데이트할 때가 업데이트 주기입니다. 여기서 나오는 업데이트 주기가 아래에서 말하는..
오늘은 UICollectionViewFlowLayout와 UICollectionViewDelegateFlowLayout에 대해서 살펴보겠습니다.UICollectionViewFlowLayout은 컬렉션 뷰 레이아웃의 한 유형입니다. 플로우 레이아웃 객체가 아이템들을 배치하고 최대한 많이 아이템들을 채우는 것을 의미합니다. 만약 현재 행에서 공간이 부족하면 새로운 행을 생성하며 레이아웃 프로세스를 진행합니다.셀의 크기가 같거나 크기가 다를 수 있습니다. .scrollDirection 속성을 사용해 스크롤 방향을 지정할 수 있습니다. 플로우 레이아웃의 각 세션이는 커스텀 헤더 푸터가 있을 수 있습니다.헤더 및 푸터 글을 구성하려면 크기를 0이 아니게 지정하세요.아래의 델리게이트 메서드를 구현하거나 프로퍼티에 ..
오늘은 UICollectionViewLayout에 대해서 살펴보겠습니다. 커스텀한 레이아웃을 구현할 때 사용했었던 기억이 있네요. 먼저 UICollectionViewLayout은 컬렉션 뷰의 레이아웃 정보를 생성하기 위한 추상 클래스입니다. 이는 컬렉션 뷰내에서 cell, supplementary view, decoration view의 위치를 결정하는 객체입니다. 즉 컬렉션 뷰는 제공된 레이아웃 정보를 통해 뷰를 알맞은 위치에 표시하여 스크린에 보일 수 있도록 합니다. 레이아웃 객체는 레이아웃 디자인에 기반해 컬렉션 뷰 아이템들의 position, size, visual 상태를 정의합니다. 컬렉션 뷰에는 3가지 타입의 visual elements가 존재합니다. cell 셀은 메인 element이고 각각..
대장정이 될 것 같은 UICollectionView에 대해서 정리해보려 합니다. 흔히 쓰는 UICollectionView는 어떻게 선언되어 있는지 살펴봅시다. UICollectionView는 UIScrollView를 상속하고 있습니다. UICollectionView는 관련 데이터 아이템들을 관리하고 커스텀 가능한 레이아웃을 사용해 표시할 수 있는 객체입니다. 그래서 우리는 UICollectionView를 연관된 데이터를 관리할 때 사용합니다. UICollectionView에서 가장 작은 단위는 item이며, 이것을 그룹화하여 섹션으로 보여줄 수도 있습니다. collectionView는 cell뿐 아니라 다른 타입의 뷰를 사용해 데이터를 표시할 수 있습니다. 섹션의 header 그리고 footer와 같이 ..
- Total
- Today
- Yesterday
- 문자열
- Deep learning
- Xcode
- rxswift
- RX
- iOS SwiftUI
- 책 후기
- Algorithm
- objc
- 독서
- leetcode
- SWIFT
- 알고리즘
- ReactiveX
- 머신러닝
- 책
- objective-c
- 딥러닝
- Animation
- ARC
- 책 추천
- 스위프트UI
- string
- 스위프트
- stanford SwiftUI
- wwdc
- 애니메이션
- swiftUI
- swift5
- ios
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
29 | 30 | 31 |