일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 알고리즘
- objc
- 애니메이션
- iOS SwiftUI
- wwdc
- SWIFT
- swiftUI
- Animation
- 머신러닝
- stanford SwiftUI
- string
- Deep learning
- Algorithm
- 스위프트
- ARC
- Xcode
- ReactiveX
- 딥러닝
- 책 추천
- rxswift
- 책
- leetcode
- swift5
- ios
- 문자열
- objective-c
- 스위프트UI
- 독서
- RX
- 책 후기
- Today
- Total
목록SWIFT (116)
THIS IS ELLIE
SwiftUI로 인터페이스를 설정하고 프로젝트를 생성해봅니다. 이전에 보지 못했던 SceneDelegate파일이 생겼습니다. SceneDelegate에는 AppDelegate에 있었던 라이프 사이클에 관한 메서드가 존재합니다. 새로운 scene메서드를 살펴보겠습니다. 이 메서드 내에서 window contents를 제공해주는 SwiftUI 뷰를 생성합니다. UIHostingController는 SwiftUI 뷰 contentView를 위해 view controller를 만듭니다. UIHostingController를 통해 기존에 있던 앱에 SwiftUI 뷰들을 통합할 수 있게 해 줍니다. 또한 인터페이스를 SwiftUI로 설정하여 프로젝트를 생성하면 스토리보드나 뷰 컨트롤러가 존재하지 않습니다. 대신에 ..
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..
leetcode.com/problems/string-to-integer-atoi 위 알고리즘 문제를 풀다가 스위프트 오버플로우 연산에 대해 궁금해졌습니다. 범위 넘어가는 작업을 처리하다가 스위프트에 오버플로우 연산에 대해 궁금해졌고 공부하고 정리해야겠다 생각이 들었습니다. *문제에서 제약 조건 Assume we are dealing with an environment which could only store integers within the 32-bit signed integer range: [−231, 231 − 1]. If the numerical value is out of the range of representable values, INT_MAX (231 − 1) or INT_MIN (−231..
스위프트에서 비트 연산자를 사용하면 데이터 구조 내에서 각각의 원시 데이터 비트를 조작할 수 있습니다. 그래픽 프로그래밍 및 장치 드라이버 생성과 같은 low-level 프로그래밍에서 더 자주 사용됩니다. 비트 연산자는 인코딩과 디코딩 같은 외부 소스의 원시 데이터와 작업할 때도 유용합니다. NOT 비트 연산자 ~ NOT 비트 연산자는 모든 비트를 반전시킵니다. let initialBits: UInt8 = 0b00001111 let invertedBits = ~initialBits // equals 11110000 위 예제를 살펴보면 0은 1이 되고 1은 0이 되는 것을 확인할 수 있습니다. AND 비트 연산자 & AND 비트 연산자는 두 수의 비트를 결합합니다. 비트가 1로 동일한 경우에 1을 반환합니..
오늘은 dropFirst(_:)와 removeFirst(_:)를 정리해보도록 하겠습니다. 사실 알고리즘 문제 풀다가... 스위프트는 왜 비슷한 메서드들을 정의해놨는지 궁금했습니다. 당연히 차이가 있으니깐 비슷한 것들을 따로 생성했겠죠...ㅎㅎ? (나: 제발 좀 공부해라) 알고리즘 문제를 보고 아! 이문제는 재귀 쓰자 마음먹었고... 재귀를 사용했어요. 그리고 재귀는 언제 리턴될지가 중요하잖아요. 저는 빈 배열이 될 때를 제약 조건으로 두고 재귀를 돌렸습니다. 즉 빈 배열이 나올 때까지 재귀로 들어가고 파라미터로는 배열의 첫 번째 요소를 제거한 나머지 배열을 계속 전달했어요. 여기서부터 사건의 발달 ... 배열의 첫 번째 요소를 제거한 나머지 배열을 전달하는 방법에 대해서 생각하다가 두 가지가 떠올랐어요...
꽤 오래전에 짰었던 코드인데 지금 보면 잘 모르겠는... 그런 코드가 종종 있지 않나요. 저는 종종 있었어요ㅎㅎ(자랑) 또 협업을 할 때 제가 짠 코드를 남이 이해하기 어려워 저한테 직접 여쭤보는 경우도 있었어요. (혼자서만 이해하기 쉽게 짜서 다른 분들이 볼 때는 이해하기 어려웠나봐요.) 여하튼 그때 Xcode의 퀵헬프를 알게 되었고 그 후로 아주 적극적으로 사용하게 되었습니다. 그래서 오늘 유용하게 쓰이는 Xcode 퀵헬프를 포스팅해보려 합니다. 변수, 상수, 클래스, 메서드, 함수, 열거형 등에 마크업 형식에 따라 주석을 작성하면 퀵헬프를 통해 작성했던 주석들을 확인할 수 있습니다. 협업에도 나에게도 아주 좋은 기능이라고 생각 들어요. 두 가지 방법으로 퀵헬프를 만들 수 있는데요. 먼저, 퀵헬프를 ..
오늘은 UICollectionViewFlowLayout와 UICollectionViewDelegateFlowLayout에 대해서 살펴보겠습니다.UICollectionViewFlowLayout은 컬렉션 뷰 레이아웃의 한 유형입니다. 플로우 레이아웃 객체가 아이템들을 배치하고 최대한 많이 아이템들을 채우는 것을 의미합니다. 만약 현재 행에서 공간이 부족하면 새로운 행을 생성하며 레이아웃 프로세스를 진행합니다.셀의 크기가 같거나 크기가 다를 수 있습니다. .scrollDirection 속성을 사용해 스크롤 방향을 지정할 수 있습니다. 플로우 레이아웃의 각 세션이는 커스텀 헤더 푸터가 있을 수 있습니다.헤더 및 푸터 글을 구성하려면 크기를 0이 아니게 지정하세요.아래의 델리게이트 메서드를 구현하거나 프로퍼티에 ..