일정 관리 달력 앱
- IDE : XCode 15.2
- Language : Swift 5.9
- iOS Deployment Target : iOS 17.2
- Version Controll : Git
- SwiftUI
- 이벤트 바: 하나의 일정이 이틀 이상 존재할 때의 상황
- 최대 4줄로 표현
- 제목이 Truncate되지 않음
- 제목이 날짜에 제한되지 않음
🗓️ 캘린더 화면
- 무한 스크롤 달력
- 여러 날에 걸친 이벤트 바
-
달력 뷰에서 가지고 있어야 하는 달력 데이터의 단위
달력 스크롤 뷰에서 일 단위의 셀을 연속적으로 보여주기 위해 일 단위의 배열로 선택
(월 단위의 배열로 가지고 있을 경우 현재의 화면 처럼 모든 날이 연속으로 보이게 구현하는 것이 복잡해 짐)
-
달력화면에서 스크롤을 통해 보여지는 날짜가 변할 때 현재 보이는 연도와 달을 판단 하는 기준
현재 스크린에 보여지는 날짜를 담은 큐를 두고
dayCell(일 단위 뷰)에appear시점에 해당 날짜를enqueue,disappear시점에서dequeue해 큐가 바뀔 때 마다 안에 있는 날짜들을 순회하며 연도, 달을 세 가장 많은 년도와 달을 현재의 연도와 달로 판단한계 : 현재 보이는 날짜 중 가장 많은 것을 판단하다보니 처음 달력이 로드될 시 오늘로 스크롤이 이동하는데 현재 날짜가 달의 후반 일(ex. 27일 등)인 경우 다음 달의 날짜가 더 많이 보이는 경우도 있어 그때 현재 달이 다음 달로 바로 이동하는 현상이 발생
-
날짜 데이터 로드 시점
일 단위 셀 중 1월, 12월인 셀이
appear시점에 이전 혹은 이후 년도 날짜 데이터 로드한계: 1월, 12월인 셀이 보일 때 마다 데이터를 로드하다 보니 데이터를 무한으로 로드하게 되는데 이를 방지하기 위해 스크롤 뷰의 앵커를 로드 되는 지점으로 둠. 그 결과 스크롤을 크게 한번에 욺직일 경우 1월, 12월에서 한번씩 스크롤이 멈추게 되는 현상 발생
