SwiftUI 57

ReactorKit + RxDataSources #1(SectionModelType)

ReactorKit + RxDataSources #1(SectionModelType) 개발환경ReactorKit 3.2.0RxDataSources 5.0.2SnapKit 5.6.0Xcode 14.0 RxDataSources 를 활용한 코드 플로우 간단 정리섹션마다 다른 셀을 적용tableView를 활용하여 동적 높이를 구현함.ReactorKit + RxDataSource를 활용하면 궁합이 좋음cellReactor에 initialState의 값을 Model로 초기화 결과물 UI  전체 코드 샘플코드는 하나씩 플로우를 따라가면서 볼 예정 Step 1. 모델을 정의하기// ✅ 0. 사용할 모델읠 정의class GWRxDataSourceModel { var id = UUID().uuidString ..

[ReactorKit] ReactorKit 공부하기 #5 RxTodo 따라잡기 (3)

ReactorKit 공부하기 #5 RxTodo 따라잡기 (3)목표: Service 도입을 위해 RxTodo 코드 분석하기 RxTodo Service쪽 코드 분석ServiceProvider.swiftServiceProvider는 ServiceProviderType을 상속받아서 provider의 self로 주어 구현하는 ServiceProvider를 채택할 클래스에서 구현protocol ServiceProviderType: class { var userDefaultsService: UserDefaultsServiceType { get } var alertService: AlertServiceType { get } var taskService: TaskServiceType { get }}final cla..

[ReactorKit] ReactorKit 공부하기 #4 RxTodo 따라잡기 (2)

[ReactorKit] ReactorKit 공부하기 #4 RxTodo 따라잡기 (2) 코드를 하나씩 따라쳐보면서 구현해 볼 예정  구현 코드어려웠던 점Action의 경우에는 정의하기가 그리 어렵지 않았으나, Mutation을 어떻게 줘야할 지 생각을 많이했었음.//// TaskListViewController.swift// AppleCollectionView//// Created by Hamlit Jason on 2022/09/07.//import UIKitimport ReactorKitfinal class TaskListViewController: UIViewController, View { var disposeBag = DisposeBag() let reactor: TaskListVi..

[ReactorKit] ReactorKit 공부하기 #3 RxTodo 따라잡기 (1)

ReactorKit 공부하기 #3 RxTodo 따라잡기 (1) 리액터 킷을 공부하는데 RxTodo를 보면서 따라해보자우선 ReactorKit의 Create기능을 스스로 구현해보기결과물 영상     리액터 간단 정리직접 따라하고 쳐보면서 사용법이 이해가 되기 시작함. ViewController에서 map을 통해 원하는 Action으로 변경해서 reactor에 전달reactor에서는 mutate함수를 통해서 이전 상태를 받아서 다음 상태를 반환reduce는 해당 로직 처리그리고 변경된 값은 viewController에서 map을 통해 reactor.state를 가져다가 사용 ViewController 코드 구현base에 존재하는 Reactor 제대로 연결해야 함. //// TaskListViewContr..

[iOS] SwiftUI SceneDelegate, AppDelegate 변경

SwiftUI SceneDelegate, AppDelegate 변경 해당 포스팅은 실제 프로젝트를 그대로 가져왔습니다. 따라서 네이밍이나 주석 등 불편한 부분이 있을 수 있습니다 자 이 포스팅을 왜 쓰냐면 SwiftUI 기반으로 프로젝트를 진행중인데, window를 변경해야하는 경우가 생겼음. 근데, 이게 기존에 SwiftUI에서 제공되는 WindowGroup을 사용하기에 자료도 넘 적고, 생각보다 코드관리도 잘 안되고 불편한게 너무나도 많았음. 그래서 많은 고민 끝에, SwiftUI에서 SceneDelegate와 AppDelegate를 채택해서 사용하기로 함. 이게 무슨말이냐면 기존에 처음에 SwiftUI로 프로젝트를 만들면 이렇게 나타날 것이고, Scene은 보다시피 ScenePhase를 통해서 관리..

[Combine] Let's study Combine!

Let's study Combine!SwiftUI Combine 공부  ✅ 애플 공식 문서를 바탕으로 정리하였습니다.https://developer.apple.com/documentation/combine Apple Developer Documentation developer.apple.com   ✅ Combine이란?이벤트 처리 오퍼레이터들을 결합함으로써 비동기 이벤트의 핸들링을 사용자가 다룹니다!조금 더 쉽게 말해보자면 Combine 프레임워크는 결국은 시간에 따라 값을 처리하기 위해 SwiftUI API를 제공합니다. 값을 방출하는 Publisher와 값을 수신하는 Subscriber를 통해 처리합니다. RxSwift를 공부했다면 더욱 쉽습니다.   ✅ Combine을 공부하는 이유.SwiftUI(..

[SwiftUI] @StateObject

@StateObject ✅ 아래 공식문서를 바탕으로 작성하였습니다. https://developer.apple.com/documentation/swiftui/stateobject Apple Developer Documentation developer.apple.com 특성 선언에 @StateObject 속성을 적용하고 ObservableObject 프로토콜을 준수하는 초기 값을 제공하여 View, App 또는 Scene에서 상태 개체를 만듭니다. @StateObject var model = DataModel() SwiftUI에서는 객체를 선언하는 인스턴스에 대해 한 번만 객체의 새 인스턴스를 생성합니다. 관찰 가능한 객체의 속성이 변경되면 SwiftUI는 해당 속성에 의존하는 뷰의 일부를 업데이트합니다...

[SwiftUI] State and Data Flow

State and Data Flow ✅ 아래의 문서 중 필요한 부분을 골라서 작성하였습니다. https://developer.apple.com/documentation/swiftui/state-and-data-flow Apple Developer Documentation developer.apple.com SwiftUI는 user interface 디자인을 선언적으로 제공하고 있다. (선언형 프로그래밍) 따라서 view를 계층적으로 구성할 때 views를 위한 데이터도 종속성도 표시한다. 외부 이벤트 혹은 user가 취하는 액션에 의해 데이터의 변화가 있을 때, SwiftUI에 영향을 받는 부분을 자동으로 업데이트 합니다. 결과적으로 이 프레임워크(SwiftUI)는 전통적으로 viewController에..

iOS 화면 캡쳐 및 녹화 감지 (feat. SwiftUI)

iOS 화면 캡쳐 및 녹화 감지 (feat. SwiftUI)DRM 기술 적용에 대해서 연구하면서 화면 녹화 감지에 대해서 서술하고자 함. 화면 캡쳐 및 감지하는 시스템 코드// 화면캡쳐NotificationCenter.default.publisher(for: UIScreen.capturedDidChangeNotification) // 화면녹화NotificationCenter.default.publisher(for: UIApplication.userDidTakeScreenshotNotification) 코드 샘플 import SwiftUIstruct ContentView: View { var body: some View { ZStack { MainVie..

[SwiftUI] ViewModifier

ViewModifier ✅ 공식문서 https://developer.apple.com/documentation/swiftui/viewmodifier Apple Developer Documentation developer.apple.com ✅ 공석문서의 일부 ✅ 이를 통해서 중복되는 코드를 쉽게 줄일 수 있습니다. import SwiftUI struct ContentView: View { var body: some View { VStack(spacing: 50){ Text("Hello, world!") .modifier(MyRoundedText()) // modifier를 활용 Text("Hello, world!") .myRoundedTextStyle() Image(systemName: "pencil") ..