Contents

AllanJuenemann/CalendarView

UICalendarView for SwiftUI

Usage

Displaying the calendar

import SwiftUI
import CalendarView

var body: some View {
  CalendarView()
}

<img src="/Images/calendar.png" width="200px" />

Configuring the calendar

CalendarView uses the calendar, time zone and locale from the environment.

CalendarView()
  .environment(\.locale, .init(identifier: "ja"))

<img src="/Images/calendar_ja.png" width="200px" />

The font design can be configured by using the fontDesign modifier.

CalendarView()
  .fontDesign(.serif)

<img src="/Images/calendar_serif.png" width="200px" />

You can also set the available date range.

CalendarView(availableDateRange: specialEvent)

<img src="/Images/calendar_range.png" width="200px" />

Updating visible components

You can set and update the current components (year, month) that should be visible in the calendar.

VStack {
  CalendarView(visibleDateComponents: $visibleComponents)
  
  Button("Today") {
    withAnimation {
      visibleComponents = calendar.dateComponents([.year, .month], from: .now)
    }
  }
}

Using decorations

Use the decorating modifier to decorate specific days.

CalendarView()
  .decorating([DateComponents(day: 16)])

Decorations can also be customized.

CalendarView()
  .decorating(specialDates, systemImage: "star.fill", color: .yellow)
  .decorating(otherDates, color: .green, size: .large)

<img src="/Images/calendar_decorations.png" width="200px" />

Handling selections

CalendarView supports selections of single and multiple dates.

CalendarView(selection: $selectedDates)

<img src="/Images/calendar_selections.png" width="200px" />

You can also configure which dates are selectable and deselectable.

CalendarView(selection: $selectedDates)
  .selectable { dateComponents in
    dateComponents.day > 15
  }
  .deselectable { dateComponents in
    dateComponents.year == currentYear && dateComponents.month == currentMonth
  }

Package Metadata

Repository: AllanJuenemann/CalendarView

Stars: 75

Forks: 8

Open issues: 0

Default branch: main

Primary language: swift

License: MIT

Topics: calendar, ios, swiftui, uicalendarview

README: README.md