일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 책 추천
- ARC
- string
- Xcode
- 책
- 알고리즘
- 딥러닝
- 스위프트
- wwdc
- iOS SwiftUI
- objective-c
- 문자열
- SWIFT
- 머신러닝
- Animation
- 책 후기
- 독서
- 애니메이션
- ios
- swiftUI
- 스위프트UI
- swift5
- Deep learning
- objc
- Algorithm
- ReactiveX
- stanford SwiftUI
- rxswift
- RX
- leetcode
- Today
- Total
목록ios (117)
THIS IS ELLIE
2020/10/12 - [개발/iOS] - AVPlayer클래스 살펴보기 2020/10/12 - [개발/iOS] - AVPlayer에서 플레이어 상태 파악하기 AVPlayer는 미디어 재생과 타임을 관리할 수 있는 컨트롤러이다. 이번에 AVPlayer를 사용해 개발하다가 하루 종일 끙끙거린 문제가 있었다. 먼저 AVAsset으로 모델링한 것으로 AVPlayerItem을 만들어 플레이어에 넣어주었다. 그리고 플레이어를 재생시키면 잘 재생되는 것 까지 확인 완료. 문제는 여기다. 잘 재생되다가 오디오 인터럽트가 지속될시에 현재 재생하고 있는 미디어가 노출되지 않는 현상이 발생했다. (카메라 앱에서 동영상을 오래동안 찍고 있거나 슬립 상태에 진입) 애플에서 자체적으로 비디오 렌더링을 못하게 막는 것 같았음. ..
SwiftUI로 인터페이스를 설정하고 프로젝트를 생성해봅니다. 이전에 보지 못했던 SceneDelegate파일이 생겼습니다. SceneDelegate에는 AppDelegate에 있었던 라이프 사이클에 관한 메서드가 존재합니다. 새로운 scene메서드를 살펴보겠습니다. 이 메서드 내에서 window contents를 제공해주는 SwiftUI 뷰를 생성합니다. UIHostingController는 SwiftUI 뷰 contentView를 위해 view controller를 만듭니다. UIHostingController를 통해 기존에 있던 앱에 SwiftUI 뷰들을 통합할 수 있게 해 줍니다. 또한 인터페이스를 SwiftUI로 설정하여 프로젝트를 생성하면 스토리보드나 뷰 컨트롤러가 존재하지 않습니다. 대신에 ..
SwiftUI로 개발하려면 아래와 같은 조건이 만족되어야 합니다. 먼저 macOS Mojave (10.14.4)이거나 이후에 나온 것이어야 합니다. 맥에서 사용하고 있는 OS가 무엇인지 확인합니다. 확인하는 방법은 좌측 상단에 있는 애플 로고를 눌러주고 이 맥에 관하여 메뉴를 누르면 macOS을 확인할 수 있습니다. support.apple.com/ko-kr/HT201260 Xcode11이거나 이후에 나온 것이어야 합니다. 확인하는 방법은 Xcode를 실행하고 좌측 상단에 있는 Xcode메뉴를 눌러주고 About Xcode를 누르면 버전을 확인할 수 있습니다.
차례 - tvOS Picture in Picture - implementing tvOS Picture in Picture - Working with the standard playback UI - Demo Picture in Picture을 살펴보자. 이번에 애플 TV에 새롭게 등장한다. 또한 두 개의 영상이 동시에 재생된다. 프로젝트 구축 구현하려면 백그라운드 모드도 추가해줘야 한다. 오디오 세션을. playback 카테고리로 구성해야 한다. 이미 아이패드에도 구현해봤다면 친숙할 것이다. 표준 재생 UI를 사용한다. PIP는 기본적으로 활성화된다. PIP 생명주기는 AVPlayerViewControllerDelegate에 있다. 아래 메서드들을 통해서 관찰 가능하다. 특히나 마지막 복구되는 메서드를 살..
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..
오늘은 dropFirst(_:)와 removeFirst(_:)를 정리해보도록 하겠습니다. 사실 알고리즘 문제 풀다가... 스위프트는 왜 비슷한 메서드들을 정의해놨는지 궁금했습니다. 당연히 차이가 있으니깐 비슷한 것들을 따로 생성했겠죠...ㅎㅎ? (나: 제발 좀 공부해라) 알고리즘 문제를 보고 아! 이문제는 재귀 쓰자 마음먹었고... 재귀를 사용했어요. 그리고 재귀는 언제 리턴될지가 중요하잖아요. 저는 빈 배열이 될 때를 제약 조건으로 두고 재귀를 돌렸습니다. 즉 빈 배열이 나올 때까지 재귀로 들어가고 파라미터로는 배열의 첫 번째 요소를 제거한 나머지 배열을 계속 전달했어요. 여기서부터 사건의 발달 ... 배열의 첫 번째 요소를 제거한 나머지 배열을 전달하는 방법에 대해서 생각하다가 두 가지가 떠올랐어요...
NSLineBreakMode는 총 6가지 케이스가 존재합니다. 오늘은 NSLineBreakMode에서 3가지 byTruncatingHead, byTruncatingTail, byTruncatingMiddle에 대해서 살펴보겠습니다. 그리고 각각이 어떻게 다른지도 비교해보겠습니다. (byWordWrapping, byCharWrapping은 따로 정리하는 걸로) NSLineBreakMode는 컨테이너에 줄이 너무 길어지면 상황에 따라 어떻게 처리할지를 구분해놓은 열거형입니다. Int를 Raw Values로 설정했고 각각의 케이스에 정수를 부여했습니다. 여기서 우리가 볼 것은 3,4,5번입니다. 저는 ...표시가 어디에 갈 것인지로 byTruncatingHead, byTruncatingTail, byTrunc..