일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- map
- RxCocoa
- UITextView
- ios
- Xcode
- 클린 코드
- 리펙터링
- Clean Code
- clean architecture
- Protocol
- 스위프트
- SWIFT
- UICollectionView
- uiscrollview
- combine
- Refactoring
- uitableview
- swiftUI
- 리펙토링
- 애니메이션
- Observable
- rxswift
- Human interface guide
- MVVM
- swift documentation
- collectionview
- tableView
- 리팩토링
- ribs
- HIG
- Today
- Total
목록2022/04 (30)
김종권의 iOS 앱 개발 알아가기
마스킹 구현 아이디어 파란색 UIView의 layer.mask에 CAShapeLayer() 인스턴스를 주입하여, 안에가 비어지도록 구현 CAShapeLayer 인트선스의 path에는 와인딩 룰을 가지고 있는 UIBezierPath를 주입 사전 지식) UIBezierPath의 성질 - 와인딩 룰 Winding Rules: path의 외부와 내부를 파악하는 방법 중 하나이며, path의 방향에 따라 내부를 칠하거나 비우는 규칙 UIView의 path값을 UIBezierPath인스턴스로 만든 후, UIView의 mask에 넣으면 와인딩 룰에 의하여 안쪽 color를 채워주는 방법 path가 겹치는 부분들의 내부 색상은 CAShapeLayer의 "fillColor"프로퍼티, path의 색상은 "strokeCol..
사전 지식) string to date 형변환 방법 DateFormatter 인스턴스를 사용하여 문자열을 어떤 형태의 날짜 형태로 만들것인지 명시 DateFormatter 인스턴스로 string을 date로 변환 let dateString = "2022-04-11T15:25:47.929Z" let dateFormatter = DateFormatter() dateFormatter.locale = .init(identifier: "en_US_POSIX") dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ" if let date = dateFormatter.date(from: dateString) { print(date) // Date 타입 2015-05-15 ..
사전 지식) 스위프트의 스레드 스위프트의 main queue는 serial queue이므로, 한 task가 끝나고 난 후에 다음 task를 실행 만약 main.sync로 실행시키면 이 serial queue에 작업이 끝날 때 까지 그 코드에 머물러 있는 상태 queue가 block되고 queue에 넣은 작업들이 완료될때까지 wait 상태 serial queue이므로 이미 block 상태가 되었기 때문에 deadlock 발생 thread safe하게 사용하려면, background thread에서 main.async를 사용하여 순서에 맞게 UI업데이트가 되도록 구현 크게 main(serial)과 global(concurrent)가 존재 async와 concurrent의 차이 async, sync 단일 작업..
1. AVFoundation 개념 - 구조, AVAsset, AVKit 2. AVFoundation 개념 - AVPlayer, AVPlayerItem 3. AVFoundation 개념 - AVPlayer 오디오 재생, 일시정지, 재생구간 이동 구현 (play, pause, seek) 4. AVFoundation 개념 - AVPlayer, AVPlayerLayer로 동영상 재생 방법 5. AVFoundation 개념 - AVAudioSession 개념 (오디오 활성화, 입출력 변경, 잠금화면 재생, 재생 중 전화가 온 경우 처리) * 번외) 오디오 처리 - AVPlayer, AVAudioPlayer 개념 (실시간 스트리밍, 로컬 파일 재생) AVAudioSession AVAudioSession라는 싱글톤이..
1. AVFoundation 개념 - 구조, AVAsset, AVKit 2. AVFoundation 개념 - AVPlayer, AVPlayerItem 3. AVFoundation 개념 - AVPlayer 오디오 재생, 일시정지, 재생구간 이동 구현 (play, pause, seek) 4. AVFoundation 개념 - AVPlayer, AVPlayerLayer로 동영상 재생 방법 5. AVFoundation 개념 - AVAudioSession 개념 (오디오 활성화, 입출력 변경, 잠금화면 재생, 재생 중 전화가 온 경우 처리) AVPlayerLayer CALayer의 서브클래스이고, 동영상을 재생시킬 수 있는 layer 보통 AVPlayerLayer의 인스턴스를 AVPlayer를 생성자로하여 만든 후,..
트랜잭션의 의미 트랜잭션: 원자성, 일관성, 독립성, 지속성을 갖춘 Operation 원자성(atomic): 부분적으로 실행되다가 중단되지 않는 것을 보장하는 능력 ex) A사람이 B사람에게 돈을 보내는 작업을 한 경우, A사람은 돈이 빠져나갔지만 B사람한테 돈이 전달되지 않은 경우, 원자성 위배 일관성(Consistency): n번 Operation을 했을 때 기대하는 값이 모두 일관적으로 동일해야함 독립성(Isolation): Operation 수행 시 다른 작업이 끼어들지 못하게 하는 것 지속성(Durability): 성공적으로 수행된 Operation은 영원히 반영 애플의 CATransaction 트랜잭션에서 atomic (부분적으로 실행되다가 중단되지 않는 것을 보장) 특성을 따르며, layer..
사전 지식 1) CAGradientLayer gradation을 주어서 뷰의 테두리까지 발산되게 해야하므로, conic gradation을 사용 gradation의 종류(axial, radial, conic) 포스팅 글 참고 사전 지식 2) UIBezierPath, CAShapeLayer UIBezierPath는 선을 그리는 역할 CAShapeLayer에 UIBezierPath 인스턴스를 주입하고, CAShapeLayer에서 선에대한 속성을 부여 뷰가 있을 때 뷰의 테두리만 접근하여 테두리에만 특정 애니메이션을 적용시키고 싶은 경우, CAShapeLayer 인스턴스를 통해 테두리만에만 접근가능 테두리만 접근하여, 테두리의 width값이나 색상 값등을 추가가 가능 보통 CALayer 인스턴스의 mask 프..
CAGradientLayer CALayer의 subclass이며, background 색상이나 layer의 색상을 gradient으로 만들 수 있는 인스턴스 gradient 종류는 3가지가 존재 axial (linear) radial (circle) conic (sweep) gradient를 사용할 때 핵심은 프로퍼티 locations [NSNumber] 위치 값 예시) [0, 0.5, 1] - 0번까지 첫 번째 색, 0.5까지 두 번째 색, 1까지 세 번째 색 startPoint, endPoint 값 axial일때 - (0,0)은 좌측 상단, (1,1)은 우측 하단 radial일때 - (0,0)은 원 내부 중심, (1,1)은 원 바깥 테두리 conic일때 - (0,0)우측하단, (1,1)은 (0,0)에..