목록 보기
️여기어때 Date·인원 선택 UI 만들기-SwiftUI Calendar Core & DateTravelerSelector 구조 재설계
프론트엔드

️여기어때 Date·인원 선택 UI 만들기-SwiftUI Calendar Core & DateTravelerSelector 구조 재설계

여기어때
여기어때
2025년 12월 16일

두줄요약

SwiftUI 기반 Date·인원 선택 UI를 도메인별 정책에 맞게 분리하고 공통 달력 Core로 재구성했습니다. LazyVGrid를 대체해 iOS 16 안정성과 렌더링 성능도 개선했습니다.

문제 상황

  • 패키지, 국내숙소, 해외숙소, 찜목록마다 날짜·인원 선택 정책이 달라 단일 통합 달력으로 묶기 어려운 구조
  • Range 모드와 선택 가능 기간, 비활성 조건이 도메인마다 달라 로직 분기 복잡도와 유지보수 부담 증가
  • LazyVGrid와 GeometryReader 조합에서 iOS 16 스크롤 버그와 성능 저하 발생

구조와 흐름

  • UI 레이어인 ScrollableCalendarView와 계산 레이어인 Calendar Core를 분리한 재설계
  • Calendar Core에서 월 목록 생성, 7×6 그리드 정규화, DateViewData 생성과 변경분 갱신 처리
  • DateSelectorModel과 CalendarRenderContext로 도메인 정책과 셀 상태 계산을 캡슐화

해결 방법

  • 도메인별 Date·인원 선택 화면은 분리하고, 달력 셀과 스타일은 공통 UI 컴포넌트로 재사용
  • LazyVGrid 대신 직접 7열 Grid를 구성하고 GeometryReader 사용을 최소화해 iOS 16 안정성 확보
  • 전체 월 데이터를 미리 계산하고 캐싱해 diffing 비용을 줄이며 변경된 셀만 갱신

댓글 0

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...