WooKoo Blog

물과 같이

분류 전체보기 123

[iOS] - MVVM 아키텍처 개선해보기

요즘 너무 바빠서 글 정리를 자주 못올렸네요 오늘은 포카마켓 iOS 팀에서 사용하고 있는 아키텍쳐 개선에 대해서 정리해보려고합니다. 우선 저희 iOS 팀은 아키텍쳐로 MVVM과 일부 ReactorKit을 사용하고 있습니다. MVVM은 회사마다 모두 조금씩은 다르게 사용하고 있는 것으로 알고 있고 MVVM 예제들을 많이 찾아봐도 조금씩은 다르게 사용하고 있었습니다. (모든 아키텍쳐가 조금씩은 회사마다 다르겠지만요 :] ) 저희는 ViewModel을 설계 할 때 흔이 알고 계시는 input output 프로토콜을과 ViewModelType 프로토콜을 사용해서 ViewModel을 설계했었습니다. 많이들 이렇게 사용하는 것으로 알고있는데 예제로 한번 보시죠 protocol FirstViewModelType { ..

개발/개발 2022.06.29

2022 WWDC 정리해보기

* 영상과 다른 분들의 요약본을 참고해서 작성했으며 제 주관에 따라 중요한 것들만 작성하였습니다. * 키노트 1. 잠금화면 기능 추가 - 시간의 폰트 및 색상 설정 등 커스터마이징 가능하며 위젯 설정이 가능합니다. - 라이브 액티비티 (잠금화면에 상시로 메세지 보이게 가능 중계) - 집중모드별 배경 커스텀 2. 아이메세지 - 보낸 후 편집가능 - 전송 취소 3. 쉐어 플레이 - 페이스타임 중 쉐어 플레이로 동시에 영상 시청 가능 4. 라이브 텍스트 - 동영상에서도 텍스트 인식 가능 - 비쥬얼 룩업 (사진 올가미 툴로 편집해서 사용 가능 & 개발자 API 지원 ) 외에도 애플 페이, 지도, 지갑 등 많은 기능 지원 https://creativesilver.tistory.com/952?category=155..

개발/개발 2022.06.08

[iOS] - UIView & Layer 무엇이 다를까?

오늘은 UIView와 Layer의 관계에 대해 알아볼 예정이다. Circle Progres와 그라데이션 색상을 적용해보면서 이 관계에 대해 알아볼 필요가 있다고 생각이 들었습니다. UIKit은 빠른 UI를 그려주기 위해 Core Animation 상단에 존재합니다. 여기서 Core Animation이 바로 우리가 흔히 말하는 CALayer에 해당됩니다. 인터넷에 흔히 볼 수 있는 이미지인데 UIView는 CALayer 즉 Layer를 포함하고 있고(root) 여러개의 sublayer들을 포함 할 수 있습니다. 우리가 흔히 프로퍼티로 사용하는 것들도 일정 부분 Layer에 많이 포함된다. 또한 위에서 말했던 Circle을 그린다거나 그라데이션 등들도 Layer의 프로퍼티들을 이용해서 그리는 것이 가능하다...

개발/개발 2022.05.09

[iOS] - Fat Framework (Universal Framework) 와 xcFramework의 개념과 정적 라이브러리와 동적 라이브러리

Fat Framework (Universal Framework) 는 아이폰과 아이폰 시뮬레이터 등을 구분없이 빌드하기 위해서 나온 개념 xcframework iOS MAC OS 등 여러 OS에 변형되어 사용될 수 있도록 나온 것이 xcframework Static Libaray 1. Static Library - 정적 라이브러리 : 주된 main 실행 파일의 코드에 패킹 스태틱 라이브러리는 아카이브된 object file이 모여있는 라이브러리이다. 2. Shared Library - 링커는 라이브러리 참조만 저장하고 실행파일에 패킹 X 1. Static Library (의존성이 없을때) 각 모듈이 자체 정적 라이브러리에 저장되는 빌드 시스템을 단순화 합니다. 정적 라이브러리가 함께 링크되어 컴파일 시 실..

개발/개발 2022.04.21

[iOS] - UIStepper 사용해보기

UIStepper 를 쓸 때 필수적을 사용하는 프로퍼티가 있다고합니다. let stepper: UIStepper = UIStepper().then{ $0.wraps = true $0.autorepeat = true $0.maximumValue = 11 } wraps 는 최댓값 최솟값에 도달했을 때 true일 경우에는 최솟값으로 바꿔주고 false일 경우에는 현재 값을 유지해준다고하네요! autorepeat은 사용자가 + - 꾹 눌렀을 때를 허용할건지!!! maximumValue는 안봐도 아시겠죠?? 최댓값을 설정하는겁니다!

개발/개발 2022.04.20

[iOS] - Xcodegen을 이용해서 모듈화와 컴플릭트에서 벗어나기

XcodeGen을 이용해서 협업 시 컴플릭트에서 벗어나보려고한다. 설치를 먼저해줘야하는데 설치는 brew install xcodegen 홈브루 설치되어있어야해요! https://brew.sh/index_ko Homebrew The Missing Package Manager for macOS (or Linux). brew.sh 홈브루 외에도 다양한 방법 있는데 여기서 참고주세요 https://github.com/yonaskolb/XcodeGen GitHub - yonaskolb/XcodeGen: A Swift command line tool for generating your Xcode project A Swift command line tool for generating your Xcode project..

개발/개발 2022.04.17

[SwiftUI] - UIKit 프로젝트에서 SwiftUI

아주아주 사용방법은 간단합니다. import SwiftUI struct ContentView:View{ var body: some View{ Text("Hello SwiftUI") } } SwiftUI를 임포트해주고 UIHostingViewController로 감싼 저 ContentView를 띄워주기만하면 됌! let swiftUIView = UIHostingController(rootView: ContentView()) self.present(swiftUIView, animated: false, completion: nil) 이런식으로!!!! 스유 회사에 부분 적용해볼까... 응 근데 canvas가 없네..? 이거 할려고 스유쓰는 이유도 있는데...ㅠ 하단에 스유에서 했떤 것처럼 struct Conte..

개발/개발 2022.04.13

Swift Lint 적용 룰

기본 Default 룰을 적용하면 엄청 워닝이 많이 뜨길래 필요한 디폴트 룰만 지킬려고 만들었다. 디폴트 룰을 전부 Disable 시킨 뒤 필요한 것만 주석처리해서 활성화 시켜주도록 하자!! 디폴트 룰 참고는 https://realm.github.io/SwiftLint/rule-directory.html Rule Directory Reference realm.github.io 레퍼런스 참고해서 필요한 것만 활성화! .swiftlint.yml 파일에 넣어주세용 disabled_rules: - line_length - closing_brace - closure_parameter_position - colon - comma - comment_spacing - compiler_protocol_init - com..

개발/개발 2022.04.11

[iOS] - Firebase crashlytics 연동하기

오늘은 Firebase의 기능 중에 Crashlytics를 연동하는 것을 정리해보겠다. 먼저 크래시틱스는 앱에서 크래시 났을 때 어떤 부분에서 발생했는지 리포트를 만들어서 보여주는 것이다!!! 오류추적이라고도하는 센트리라는 프로그램이랑 비슷하다! 구글 Firebase에서 제공해줘서 간단하게 구현할 수 있다. https://firebase.google.com/docs/crashlytics/get-started?hl=ko&platform=ios Firebase Crashlytics 시작하기 | Firebase Documentation Join Firebase at Google I/O online May 11-12, 2022. Register now 의견 보내기 Firebase Crashlytics 시작하기..

개발/개발 2022.04.11

[iOS] - RxDataSource로 테이블뷰 헤더 푸터 그리기 (MVVM)

Rx를 이용해서 테이블 뷰의 헤더뷰나 푸터뷰를 그려야할 경우가 있을 것이다. 기존에 tableView.rx.items를 이용해서 테이블 뷰를 그렸겠지만 헤더뷰와 푸터뷰, 섹션 등을 사용하려면 RxDataSource를 이용해야한다. 그거에대한 방법을 자세하게는 아니고 정리해보려고한다. RxDataSources를 라이브러리를 추가한다. https://github.com/RxSwiftCommunity/RxDataSources GitHub - RxSwiftCommunity/RxDataSources: UITableView and UICollectionView Data Sources for RxSwift (sections, animated updates, UITableView and UICollectionView ..

개발/개발 2022.04.04