일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Xcode
- ribs
- Refactoring
- clean architecture
- UITextView
- swiftUI
- collectionview
- map
- uiscrollview
- Human interface guide
- rxswift
- MVVM
- 스위프트
- HIG
- combine
- uitableview
- ios
- 리펙토링
- 클린 코드
- tableView
- UICollectionView
- 리팩토링
- 리펙터링
- Protocol
- 애니메이션
- RxCocoa
- Clean Code
- Observable
- SWIFT
- swift documentation
- Today
- Total
목록2022/04 (30)
김종권의 iOS 앱 개발 알아가기
1. 오디오 처리 - AVPlayer, AVAudioPlayer 개념 (실시간 스트리밍, 로컬 파일 재생) 2. 오디오 처리 - AVAudioRecoder 개념 (녹음) 비교 (복습) 실시간 스트리밍 -> AVPlayer 사용 로컬 파일 재생 -> AVAudioPlayer 사용 음성 특수 효과 or 변조 -> AVAudioEngine 사용 cf) 녹음 -> AVAudioRecoder 사용 비동기 처리의 편의를 위해서 사용한 프레임워크 pod 'RxSwift' pod 'RxCocoa' pod 'RxAVFoundation' AVAudioRecoder 녹음기능을 사용하기 위해서 시스템 권한이 필요 NSMicrophoneUsageDescription 마이크 이용 권한 요청 메시지 MyAudioRecoderVie..
1. 오디오 처리 - AVPlayer, AVAudioPlayer 개념 (실시간 스트리밍, 로컬 파일 재생) 2. 오디오 처리 - AVAudioRecoder 개념 (녹음) 비교 실시간 스트리밍 -> AVPlayer 사용 로컬 파일 재생 -> AVAudioPlayer 사용 음성 특수 효과 or 변조 -> AVAudioEngine 사용 cf) 녹음 -> AVAudioRecoder 사용 비동기 처리의 편의를 위해서 사용한 프레임워크 pod 'RxSwift' pod 'RxCocoa' pod 'RxAVFoundation' 커스텀 Rx extension 버튼 하나로 토글 처리하는데 편리한 isHighlighted, isSelected 추가 // Rx+Extension.swift extension Reactive wh..
Thread Safe 멀티 스레드 프로그래밍에서 instance나 method에 여러 스레드가 동시에 접근이 이루어져도 프로그램 실행에 문제가 없는 것 ex) thread safe하지 않은 경우, 증상 중 하나 deadlock 자원을 점유하고 있으면서 동시에 다른 자원을 요청하여 계속 wait하는 상태 Thread-safe 지키는 방법 Re-entrancy 어떤 method가 한 스레드에 의해 호출되어 실행중일 때, 다른 스레드가 이 method를 호출하더라도 그 결과가 각각에게 올바르게 주어짐 Thread-local storage ( = Immutable Objects) 공유 자원을 최대한 줄여서 동시 접근을 막는 방법 mutual exclusion 공유 자원을 사용하는 경우, 해당 자원의 접근을 se..
Xcode 캐시, DerivedData 폴더 * derived: 파생된 xcode는 빌드하면 빌드 결과를 폴더에 저장해놓고, 앞으로 빌드할때마다 그 폴더를 참고하여 캐싱하여 사용하는 방식 폴더의 위치 ~/Library/Developer/Xcode/DerivedData MyApp이라는 앱을 빌드한 경우 "cmd + B" DerivedData/ModuleCache.noindex 모듈에 대한 정보를 저장해놓고, Xcode에서는 이 정보를 캐싱하여 사용 모듈화하면 빌드시간이 줄어드는 이유가 여기에 캐싱되기 때문 DerivedData/MyApp-fvkmtlk...regogcy 빌드 정보, 인덱스 정보, 심볼 정보, 로그등을 기록 info.plist는 XCode에서 정한 값이 아닌 별도의 값임을 주의 (LastAc..
UIButton 하나로 토글 버튼 구현 방법 UIButton에는 normal, selected, highlighted가 존재 normal과 selected 상태를 이용하여 토글 버튼으로 활용 highlighted애니메이션은 setImage(_:for:) 에서 for부분에 적용 normal -> highlighted 애니메이션은 for: .highlighted로 설정 selecte -> highlighted 애니메이션은 배열로 선언 [.selected, .highlighted] button.setImage(UIImage(named: "play"), for: .normal) button.setImage(UIImage(named: "play-pressed"), for: .highlighted) button.s..
구현 아이디어 테두리에 관한 윤곽 레이아웃을 구하기 위해서 UIBezierPath를 사용 이 UIBezierPath의 cgPath값을 밑에 CAShapeLayer에서 사용 테두리에 도는 애니메이션을 적용하기 위해서 2가지의 CAShapeLayer를 사용 회색 선을 타나내는 CAShapeLayer 파란색으로 색상이 채워지는 CAShapeLayer CAShapeLayer 준비 회색 선 layer의 strokeEnd 값은 1.0으로 놓으면 원으로 칠해져 있는 상태 파란색 색상 layer의 strokeEnd 값의 초기값은 0으로 놓고, CABasicAnimation의 "strokeEnd" 애니메이션을 통해서 1초마다 strokeEnd값이 채워지도록 구현 커스텀뷰 필요한 요소 준비 윤곽 레이아웃 path 상태를 ..
1. UICollectionViewCompositionalLayout - 개념 (section, group, item) 2. UICollectionViewCompositionalLayout - 개념 SupplementaryView, Header, Footer) 3. UICollectionViewCompositionalLayout - 개념 (DecorationView, Badge) 4. UICollectionViewCompositionalLayout - 개념 (orthogonalScrollingBehavior, 수평 스크롤, visibleItemsInvalidationHandler) 5. UICollectionViewCompositionalLayout - 응용 (유튜브 뮤직 앱 레이아웃 구현) 가장 중요한..
allSatisfy 연산자 Collection의 모든 요소가 특정 조건을 만족시키는지 알고 싶은 경우 사용 ex) 배열을 순회하면서 원소들이 특정 조건을 모두 만족하는지 확인할 때 사용 Array, Dictionary, Set 타입에 사용 let arr = ["abcdef", "12345", "문자열"] let bool = arr.allSatisfy { $0.count > 2 } print(bool) // true let dict = ["1": 1, "2": 2] let bool2 = dict.allSatisfy { $0.key == String($0.value) } print(bool2) // true var set = Set() set.insert(2) set.insert(4) set.insert(6..