Calendar

Calendars are used for date selection within a defined time period.

Backpack-SwiftUI/Calendar

Cocoapods class reference view on Github

Range selection

Day Night

Single selection

Day Night

Usage

BPKCalendar can be configured with different selection types and an accessory action for each month.

Selection types

Single selection

Allows the user to only select one date at a time.


                                                
                                                @State var selectedDate: Date?
                                                
                                                BPKCalendar(
                                                    selectionType: .single(selected: $selectedDate),
                                                    calendar: .current,
                                                    validRange: validStartDate...validEndDate
                                                )

Range selection

Allows the user to select a range of dates.


                                                
                                                @State var selectedDateRange: ClosedRange<Date>?
                                                
                                                BPKCalendar(
                                                    selectionType: .range(selectedRange: $selectedDateRange),
                                                    calendar: .current,
                                                    validRange: validStartDate...validEndDate
                                                )

Valid range

The valid range is used to determine which dates are selectable by the user. Dates outside of the valid range will be disabled.


                                                
                                                let startDate = Calendar.current.date(byAdding: .day, value: -1, to: Date())
                                                let endDate = Calendar.current.date(byAdding: .day, value: 1, to: Date())
                                                
                                                BPKCalendar(
                                                    selectionType: .single(selected: $selectedDate),
                                                    calendar: .current,
                                                    validRange: startDate...endDate
                                                )