뷰 컨벤션 도식

FKViewConvention 예제 프로젝트
분리 목적
💡
- 페이지를 만드는데 개인 별 시간소요가 차이가 크게 발생하는 경우, 페이지 내부에 View Component 단위로 액션을 분리해 상호간에 협업할 수 있어야 합니다.
- 추가적으로 앱의 문제점이 발생한 경우 수정을 효율적으로 해야할 수 있습니다.
- 이 경우를 대비해 View Part에 파일 및 코드 구조를 설정합니다.
⚠️ 주의 사항
- 하나의 페이지에만 적용하는 내용입니다.
- (X) [일지 작성 > 농작업 키워드]와 같은 하위 페이지는 고려하지 않음
- (O) [일지 작성] 페이지만 고려함
알아야 할 사전 개념
- View와 ViewModifier의 차이점
- @EnvironmentObject와 하위 뷰 (페이지 X) 간 데이터 공유
구조 정의
하나의 EnvironmentObject 인스턴스로 분리한 뷰 요소 간 데이터 공유를 할 수 있다.
1. MainPageView
Figma에서 기능을 명세한 페이지
포함 가능한 코드들
- 해당 페이지의 하위 뷰 컴포넌트들을 포함한다.
- 해당 페이지의 하위 ViewModifier들을 포함한다.
- 하나의 페이지 레이아웃 구성을 위한 SwiftUI 기본 뷰 컴포넌트와 모디파이어를 포함한다.
- Sheet, NavigationDestination 등 화면 전환을 위한 모디파이어를 포함한다.
2. ViewComponents
페이지 하위 뷰 컴포넌트들을 내부에 선언하는 Enum 타입
포함 가능한 코드들
- FarmerKing 디자인 시스템에서 정의한 뷰 컴포넌트
- SwiftUI의 기본 뷰 컴포넌트
3. ViewModifiers
페이지 하위 뷰 모디파이어들
포함 가능한 코드들
- 해당 페이지의 하위 뷰 컴포넌트들을 포함한다.
- FarmerKing 디자인 시스템에서 정의한 뷰 모디파이어
- 하나의 페이지 레이아웃 구성을 위한 SwiftUI 기본 모디파이어를 포함한다.
- Sheet, NavigationDestination 등 화면 전환을 위한 기본 모디파이어를 포함한다.
적용 예시 프로젝트

Hello World 버튼을 누르면 가운데 두 텍스트 박스의 색상이 바꾸고 알람이 뜨는 프로젝트 하나의 페이지만 존재한다.
프로젝트 폴더

Cores > FKViewSystem
FarmerKing에서 공통적으로 사용하는 뷰 컴포넌트들 폴더
ViewModels >JournalWriteVM
저널 작성 페이지에서 사용하는 데이터 간의 흐름을 위한 뷰 모델들 집합 폴더
- JournalWriteVM
Scenes > JournalWrite
JournalWrite 페이지를 구성하는 화면과 관련된 폴더
- JournalWrite ⇒ 구조 정의에서 MainPageView
- JournalWriteModule ⇒ 구조 정의에서 ViewComponents, ViewModifiers를 담은 폴더들
- JournalWriteViewComponent ⇒ 구조 정의에서 ViewComponents
- JournalWriteModifier ⇒ 구조 정의에서 ViewModifiers
'이모저모 > SwiftUI' 카테고리의 다른 글
| iPad ConfirmationDialog 에러 대응 (0) | 2024.06.23 |
|---|---|
| TCA - 뽀모도로 앱, Timer View Interaction (0) | 2024.05.07 |
| TCA에서 Stream 생성 및 주입 (0) | 2024.04.13 |
| Using @globalActor RealmSwift in TCA (0) | 2024.03.25 |
| TCA - Pagination TabView 사용 (0) | 2024.03.17 |
댓글