Skip to content

jus1234/CalendarApp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 

Repository files navigation

CalendarApp

개요


일정 관리 달력 앱

개발 환경


  • IDE : XCode 15.2
  • Language : Swift 5.9
  • iOS Deployment Target : iOS 17.2
  • Version Controll : Git

기술


  • SwiftUI

요구사항


  • 이벤트 바: 하나의 일정이 이틀 이상 존재할 때의 상황
    • 최대 4줄로 표현
    • 제목이 Truncate되지 않음
    • 제목이 날짜에 제한되지 않음

주요 기능 소개


🗓️ 캘린더 화면

  • 무한 스크롤 달력
  • 여러 날에 걸친 이벤트 바

화면-기록-2024-04-30-오후-5 13 29

캘린더 구현 중 주요 고민 사항


  1. 달력 뷰에서 가지고 있어야 하는 달력 데이터의 단위

    달력 스크롤 뷰에서 일 단위의 셀을 연속적으로 보여주기 위해 일 단위의 배열로 선택

    (월 단위의 배열로 가지고 있을 경우 현재의 화면 처럼 모든 날이 연속으로 보이게 구현하는 것이 복잡해 짐)

  2. 달력화면에서 스크롤을 통해 보여지는 날짜가 변할 때 현재 보이는 연도와 달을 판단 하는 기준

    현재 스크린에 보여지는 날짜를 담은 큐를 두고 dayCell(일 단위 뷰)에 appear시점에 해당 날짜를 enqueue, disappear시점에서 dequeue해 큐가 바뀔 때 마다 안에 있는 날짜들을 순회하며 연도, 달을 세 가장 많은 년도와 달을 현재의 연도와 달로 판단

    한계 : 현재 보이는 날짜 중 가장 많은 것을 판단하다보니 처음 달력이 로드될 시 오늘로 스크롤이 이동하는데 현재 날짜가 달의 후반 일(ex. 27일 등)인 경우 다음 달의 날짜가 더 많이 보이는 경우도 있어 그때 현재 달이 다음 달로 바로 이동하는 현상이 발생

  3. 날짜 데이터 로드 시점

    일 단위 셀 중 1월, 12월인 셀이 appear시점에 이전 혹은 이후 년도 날짜 데이터 로드

    한계: 1월, 12월인 셀이 보일 때 마다 데이터를 로드하다 보니 데이터를 무한으로 로드하게 되는데 이를 방지하기 위해 스크롤 뷰의 앵커를 로드 되는 지점으로 둠. 그 결과 스크롤을 크게 한번에 욺직일 경우 1월, 12월에서 한번씩 스크롤이 멈추게 되는 현상 발생

About

달력 앱

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages