Developer.TokkiSea/Apple(14)
-
framework not found CoreAudioTypes / AudioUnit 해결 방법
골치아픈 링크 에러가 뜬다. 위에서 AudioUnit.framework 와 CoreAudioTypes.framework 를 제거 하고 CoreAudio.framework 와 AudioToolbox.framework 가 추가되어 있는지 확인 한다. 해봤던거라도 다시 한번 해보세요..!!! 이후 빌드를 해보면 해결이 되거나.. 심볼을 못찾는 에러가 뜨거나. 사용중인 특정 함수를 못찾는 에러가 뜬다. 임포트 되어있나 확인하고 Static Library 로 바꿔줘 보세요..
2022.03.08 -
420YpCbCr8 Conversion to ARGB , RGBA 변환 방법
개인 메모용 입니다. 카메라등에서 들어오는 이미지 버퍼의 420YpCbCr8 포멧을 ARGB 나 RGBA 로 변환하는 방법이예요. (이직 관계로 요즘 일이 너무 많아서 TokkiSea는 신경을 못쓰고 있군요.) argbBuffer 은 ARGB 포맷이고 RGBA 로는 포인터 +1 를 해주면 되겠지만 맨 끝 포인터가 미할당 영역이라 무슨일이 일어날지 몰라요. RGBX로 사용하면 문제는 없을듯합니다. // YpCbCr Format // kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange : Bi-Planar Component Y'CbCr 8-bit 4:2:0, video-range (luma=[16,235] chroma=[16,240]). // kCVPixelFormatTyp..
2022.03.03 -
Swift - UICollectionView fixing center when rotate/landscape 방법
임시 메모 글입니다.(나중에 다듬을거예요..) 아래 코드를 이용하면 콜렉션뷰의 가로/세로 보기 전환 시 편하게 진행중이던 index 에 고정 됩니다. class RootPreviewVC: UIViewController { private lazy var collectionView: UICollectionView = { let collectionView = UICollectionView(frame: .zero, collectionViewLayout: collectionViewLayout) ... return collectionView }() private var prevIndexPathAtCenter: IndexPath? private var currentIndexPath: IndexPath? { let c..
2021.12.29 -
RxSwift 정리 6 - UI (TableView .bind .drive .orEmpty)
TableView.rx 기존 방식이라면 UIViewController에 TableView 하나 추가 delegate와 dataSource를 UIViewController에 연결하고 UITableViewDelegate, UITableViewDataSource 를 상속한 다음 func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) 를 오버라이딩 한후 UITableViewCell 추가하고 클래스를 만들어 연결하고.. 과정을 생략할 수 있습니다. 그냥 UITableView 추가하고 I..
2021.08.24 -
RxSwift 정리 5 - operators(.withLatestFrom .sample .amb .switchLatest .retry(when:))
.withLatestFrom() .sample() .withLatestFrom : 가장 최근 발생값을 계속 subscribe한다. .sample : 가장 최근 발생값을 subscribe한다. 이후 새로운 값이 없다면 발생값이 없다. sample = withLatestFrom + distinctUntilChanged() 와 같다. let button = PublishSubject() let textField = PublishSubject() button.withLatestFrom(textField) // textField.sample(button) .subscribe(onNext: { value in print(value) }) textField.onNext("Typ") textField.onNext("T..
2021.08.23 -
RxSwift 정리 4 - operators(.startWith .concat .concatMap .marge .combineLatest .zip)
.startWith() 시작 값을 지정 let numbers = Observable.of(2, 3, 4) let observable = numbers.startWith(1) observable.subscribe(onNext: { value in print(value) }) // 1,2,3,4 .concat() 두 시퀸스를 합친다.(순서에따라 앞,뒤 주의) 동작 > first subscribe 하고 complete 발생한후 second를 subscribe한다. let first = Observable.of(1, 2, 3) let second = Observable.of(4, 5, 6) Observable.concat([first, second]).subscribe(onNext: { value in prin..
2021.08.23 -
RxSwift 정리 3 - operators(.flatMap .flatMapLatest .materialize .dematerialize .share)
계속 해서 연산자 입니다. .flatMap() 모든 시퀸스를 하나의 시퀸스로 모아서 발생 시킨다. .flatMapLatest() 가장 마지막의 시퀸스로 발생 시킨다. .materialize(), .dematerialize() score 는 Int 이다. materialize() 를 붙여주면 RxSwift.Event 형태로 바꾸어 준다. ( ".next(1)" 이 찍힘 ) Error, Complete 등 이벤트를 확인 할 수 있다. .dematerialize() 를 붙여주면 다시 Int 로 바뀐다. ( 다시 "1" 이 찍힘 ) struct Student { var score: ReplaySubject } let A = Student(score: ReplaySubject.createUnbounded()) l..
2021.08.20 -
RxSwift 정리 2 - SubJect, operators(기본)
메모용 연산자는 너무너무도 많아서 새로운 연산자 마다 별도로 작성할 예정입니다. 여기서는 많이쓰는 기본적인것만 작성합니다. .ignoreElements().elementAt().filter().skip().skipWhile().skipUntil().take().takeWhile().takeLast().takeUntil().distinctUntilChanged().distinctUntilChanged().delay.buffer.throttle.debounce.toArray().map.enumerated() RxSwift의 장점 !! 비동기화 프로그래밍을 쉽고 강력하게 할 수 있다. Rx 가 붙은 다른 언어로 즉시 사용할 수 있다. RxSwift 작성 -> RxJava로 즉시 사용 가능 PublishSubj..
2021.08.20 -
RxSwift 정리 1 - Observable 생성
RxSwift 메모 용도 정리입니다. RxSwift Reactive Progreamming with Swift 책을 기준으로 작성되었습니다. Observable(sequence) 생성 let one = 1,two = 2,three = 3 1개요소만 생성 : .just() let observable1 = Observable.just(one,scheduler: MainScheduler.instance) scheduler: MainScheduler.instance 요소 생성시에도 스레드를 선택해줄수 있습니다. 종류는 다음에 설명, 여러 요소 생성 : .of() let observable2 = Observable.of(one,two,three) //Observable let observable3 = Observ..
2021.08.20 -
프로그래머스 - Swift algorithm - BALLOON 단어 찾기
"BAOOLLNNOLOLGBAX" 이런 형태의 문자가 입력되면 BALLOON을 몇개나 만들수 있는지를 알아내는 문제다. C++의 char 정도로 for 문 돌면서 찾고 지우면 너무 쉽게 결과가 나올것 같다. 하지만 Swift 는 Charecter 와 String 의 사용이 자연스럽지 못해서 조금은 어려울 수 있다. public func findBALLOON(_ S : inout String) -> Int { let searchArr : Array = ["B","A","L","L","O","O","N"] var foundCount : Int = 0 var bRoop : Bool = true while(bRoop) { if !S.contains("B") { // 첫 글자 B 조차 없으면 시작도 하지 않는다...
2021.08.04 -
SwiftUI 스터디 4. List, GeometryReader, Animation, Selection, SF Symbols
3편에 이어서 이번에는 List를 해보겠습니다. 실무 수준에 쓸 수 있도록 이것저것 해보았습니다만 그래도 부족한 느낌이 드네요. 리스트에 사용할 데이터 구조체를 하나 만들어 줍니다. struct ListData { let id: String let level: Int let nickName: String static func getUsers() -> [ListData] { return [ ListData(id: "TokkiSea", level: 25, nickName: "토끼씨"), ListData(id: "jellapi", level: 70, nickName: "젤라피"), ListData(id: "Sukki", level: 90, nickName: "수기"), ListData(id: "Rabbit",..
2021.06.03 -
SwiftUI 스터디 3. StackView, Gradient
2편에 이어서 V,H,Z Stack View에 대해 알아보겠습니다. 아래는 결과 화면이예요. edgesIgnoringSafeArea를 이용해 SafeArea를 무시한 모습과(왼쪽) 무시하지 않음 모습입니다.(오른쪽) 전체 소스는 다음과 같아요. struct ContentView: View { var body: some View { NavigationView { Group { VStack(alignment: .center, spacing: 0) { Spacer() HStack(alignment: .center, spacing: 25, content: { Text("TokkiSea") Text("TokkiSea") Text("TokkiSea") }).background(Color.gray) Spacer() ..
2021.05.27