UICalendarView로 캘린더 만들기

pengsang·2023년 7월 31일

개발일지

목록 보기
2/5
post-thumbnail

UICalendarView

  • 캘린더를 표시하기 위한 뷰
  • ios 16이상의 버전에서만 사용이 가능하다

UICalendarView 캘린더 표시하기

  • 캘린더를 표시하기 위한 기본적인 코드로 별도의 오토레이아웃을 잡아줘야하며, 화면의 크기, 기종에 따라 캘린더 크기의 제약이 발생한다
    -> heightAnchor를 원래 기본적으로 지원하는 캘린더 크기보다 작게 설정할 경우 캘린더가 잘리는 모습이 보인다
let calendarVC = UICalendarView()
calendarVC.calendar = .current //뷰 컨트롤러의 캘린더를 사용자의 지역의 현재 캘린더로 설정
calendarVC.locale = .current //캘린더 뷰 컨트롤러의 지역을 사용자의 지역의 현재 지역
calendarVC.fontDesign = . rounded //캘린더 뷰 컨트롤러의 글꼴 디자인을 둥근 것으로 설정
  • 해당 코드만 입력했을 경우(오토레이아웃은 별도로 지정) 결과로는 아래 사진과 같이 캘린더가 만들어진다

  • 단, 위 코드의 결과로는 단순 캘린더의 표시만 가능할뿐 날짜 선택에 따른 이벤트는 발생하지 않는다.

  • 날짜의 선택과 데이터 변화에 따른 캘린더를 꾸미길 원한다면 Delegate확장을 이용해서 기능을 추가해야한다


UICalendarView 캘린더 날짜 선택하기

  • 날짜 선택시 이벤트를 발생시키기 위해서는 UICalendarSelectionSingleDateDelegate가 필요하다

  • 공식 애플 개발자 문서 주소는 다음과 같다
    https://developer.apple.com/documentation/uikit/uicalendarview

  • 아래 코드를 삽입하면 날짜 선택에 대한 이벤트를 발생시키는 기능을 확장할 수 있다

// 캘린더 날짜 선택시 이벤트를 발생시키는 UICalendarSelectionSingleDate(delegate: self)
calendarVC.selectionBehavior = UICalendarSelectionSingleDate(delegate: self)
  • 확장을 완료하였을 경우 아래 코드를 입력해 delegate 확장을 해야한다
  • 아래 예시는 날짜 선택시 나타나는 정보들 중 day에 해당되는 내용만 출력하도록 설정한 결과이다
  • 기본적으로 dateComponets가 알려주는 정보는 아래와 같이 출력되며 optional type다

calendar: gregorian (current) era: 1 year: 2023 month: 8 day: 31 isLeapMonth: false

extension CalenderViewController: UICalendarSelectionSingleDateDelegate {
    func dateSelection(_ selection: UICalendarSelectionSingleDate, didSelectDate dateComponents: DateComponents?) {
        if let date = dateComponents?.day {
            print(date)
        }else {print("empty date")}

    }
}
  • 위 코드를 기반으로 날짜를 선택한 결과의 사진은 아래와 같다

UICalendarView 캘린더 꾸미기 - 추가예정

profile
내 꿈은 고등어

0개의 댓글