CrispyCalendar is the calendar UI framework you need

Overview

crispycalendar

Whether you are writing yet another one task tracker or calendar app, or simply want to offer the users to skip the joy of using UIDatePicker and let them quickly and efficiently select dates — CrispyCalendar is the calendar UI framework you need.

CocoaPods Compatible Platform support Documentation License

Features

  • Written with localization in mind.
    Specifically, many various (and even nonsensical) combinations of calendar types, locale identifiers and writing directions were tested. Also, this framework does not contain a single translation error simply because only standard Apple frameworks (hence, their translations) are being used and none of third-party code.
  • Ease of integration, customization options and extensibility — you are free to choose any and all of those.
    The framework contains out-of-the-box components for the most common tasks; in many cases a single line of code allows you to employ rich user interfaces, allowing you to concentrate on business logic implementation. But at the same time, every such solution is thoroughly equipped with tuning possibilities and is designed modularly, allowing you to freely reuse and combine basic blocks to suite your specific requests.
  • Optimized for performance.
    Even seasoned devices like iPhone 5 are rendering the calendar at the acceptable frame rate to say the least. Minor sacrifices had to be made to achieve that, but the overall result is shining nonetheless.
  • Objective C support.
    Whether you are constrained by legacy code or just not ready for Swift in production-grade code yet, using CrispyCalendar from Objective C is possible. Mostly, Swift-specific features only are missing, but blind spots here and there are possible.

Getting Started

  • Common usage patterns and various examples of code can be found in Demo project.
  • API Reference contains detailed descriptions of the vast majority of public & open types and identifiers.

Installation

Cocoapods (preferred)

CocoaPods is a dependency manager for Swift and Objective-C Cocoa projects. It has over 53 thousand libraries and is used in over 3 million apps. More details and installation instructions may be found here: Using Cocoapods.

To integrate CrispyCalendar into your Xcode project using CocoaPods, specify it in your Podfile:

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '10.3'

target 'TargetName' do
    pod 'CrispyCalendar', '~> 1.0.2'
end

Then, run the following command:

$ pod install

Manual

Open Demo project in Xcode and build CrispyCalendar framework target. Then, embed it into your project and add it to Linked Frameworks and Libraries section of app target.

Screenshots

Appearance customization

All the fonts, colors and other appearance details are customizable via corresponding properties. CPCCalendarView does also support customization via UIAppearance for properties representable in Objective C.

Default Basic from Debt Control Input view from Debt Control
default basic inputview

Simple selection

Prebuilt UI commonly uses CPCMonthView capable of displaying single month. CPCMultiMonthsView may be used as container for month views allowing shared selection handling and other functionality.

Single day selection Days range selection
single range

Ordered & unordered selection

Selection process is fully controlled externally by corresponding view's delegate. Note that delegates for views inside containers are not supported.

Unordered selection Ordered selection
unordered ordered

Custom draw handlers

CPCMonthView does not comprise any real child views but is logically drawn from title "label" and "grid", consisting of "day cells". Custom day rendering is supported via custom CPCDayCellRenderers.

Custom cell renderer example
drawing

Localization

Locale used by any component cannot be set explicitly, but Calendar's locale is honored. The framework uses [[[NSBundle mainBundle] preferredLocalizations] firstObject] as default locale, including setting it for calendars without explicitly set locale.

Non-gregorian calendar rendering
hebrew

Other

Available dates limiting, RTL and landscape orientation are fully supported.

Dates limiting Columned mode
constrained columns
RTL layout
rtl

Credits

CrispyCalendar is owned and maintained by the Cleverpumpkin, Ltd.

CrispyCalendar was originally created by Kirill Bystrov as a response to lack of quality calendar-rendering libraries. Android couterpart does exist (but neither API nor UX is similar), check it out here: CrunchyCalendar.

License

CrispyCalendar is released under the MIT license. See LICENSE for details.

You might also like...
An easy to use SwiftUI date picker for Shamsi (Persian) calendar
An easy to use SwiftUI date picker for Shamsi (Persian) calendar

ShamsiDatePicker An easy-to-use SwiftUI iOS/watchOS date picker for Shamsi (Persian) calendar. Features Pure (100%) SwiftUI implementation Full suppor

SwiftUICalendar - SwiftUI simple calendar
SwiftUICalendar - SwiftUI simple calendar

SwiftUICalendar Installation CocoaPods pod 'SwiftUICalendar' import import SwiftUICalendar Features Infinite scroll Support horizontal and vertical sc

Dead simple calendar implementation
Dead simple calendar implementation

Package provides a CalendarView which can be used to display simple calendar in your App.

A calendar quick view for the MacOS status bar

Calendar Quick View Quick Menu Calendar in the mac app store An open source macOS calendar preview utility Download from the Mac App Store Visualizati

Clendar - universal calendar app. Written in SwiftUI. Available on App Store. MIT License.

Clendar - minimal calendar Minimal Calendar & Widgets Landing Page About This project is started out as an UIKit base app for me to learn new WWDC fea

A custom visual calendar for iOS 8+ written in Swift (>= 4.0).
A custom visual calendar for iOS 8+ written in Swift (= 4.0).

Overview Screenshots GIF Demo Installation Usage Architecture Version matrix Advanced API For contributors Screenshots GIF Demo Installation CocoaPods

iOS 7+ Calendar (Date Picker) with Infinite Scrolling.
iOS 7+ Calendar (Date Picker) with Infinite Scrolling.

RSDayFlow iOS 7 Calendar with Infinite Scrolling. Only need 4 lines of code to set up. RSDayFlow is a slim fork of DayFlow with updates and extensions

An availability calendar implementation for iOS
An availability calendar implementation for iOS

NWCalendarView NWCalendar View is an iOS control that displays a calendar. It is perfect for appointment or availibilty selection. It allows for selec

A fully customizable calendar view acting as a date range picker
A fully customizable calendar view acting as a date range picker

Demo Installation CocoaPods With CocoaPods you can simply add GLCalendarView in your Podfile: pod "GLCalendarView", "~ 1.0.0" Source File You can co

Owner
CleverPumpkin
CleverPumpkin
RCalendarPicker A date picker control, Calendar calendar control, select control, calendar, date selection, the clock selection control.

RCalendarPicker RCalendarPicker Calendar calendar control, select control, calendar, date selection, the clock selection control. 日历控件 ,日历选择控件,日历,日期选择

杜耀辉 131 Jul 18, 2022
Malendar is a personal calendar app that connects to your default calendar and lets you add/delete events

Malendar is a personal calendar app that connects to your default calendar and lets you add/delete events. It will gather events from your default iOS calendar.

Chase 194 Jan 4, 2023
A declarative, performant, iOS calendar UI component that supports use cases ranging from simple date pickers all the way up to fully-featured calendar apps.

HorizonCalendar A declarative, performant, calendar UI component that supports use cases ranging from simple date pickers all the way up to fully-feat

Airbnb 2.2k Jan 4, 2023
Simple customizable calendar component in Swift :calendar:

Koyomi Koyomi is a simple calendar view framework for iOS, written in Swift ?? Content Features Demo App Usage introduction : Change displayed month,

Shohei Yokoyama 741 Dec 24, 2022
An open source calendar framework for iOS, with support for customization, IBDesignable, Autolayout, and more.

About MBCalendarKit is a calendar control written in Objective-C with modern best practices and Swift interoperability in mind. It offers a flexible c

Moshe 563 Oct 27, 2022
📅 Calendar for iOS, iPadOS and macOS in Swift

CalendarKit CalendarKit is a Swift calendar UI library for iOS, iPadOS and Mac Catalyst. It looks similar to the Apple Calendar app out-of-the-box, wh

Richard Topchii 2.2k Jan 5, 2023
An Easy to Use Calendar for iOS (Swift 5.0)

This is an easy to use, "just drag and drop it in your code" type of calendar for iOS. It supports both vertical and horizontal scrolling, as well as

Michael Michailidis 525 Dec 23, 2022
The elegant full screen calendar missed in SwiftUI.

ElegantCalendar ElegantCalendar is an efficient and customizable full screen calendar written in SwiftUI. ElegantTimeline - Shows what's possible usin

Kevin Li 553 Dec 27, 2022
SwiftUI Simple Calendar / Date Picker for iOS

RKCalendar RKCalendar is a SwiftUI Calendar / Date Picker for iOS. Features include: minimum and maximum calendar dates selectable, single date select

null 453 Dec 28, 2022
A customizable swiftui calendar

Description not available. Installation From Xcode 11, you can use Swift Package Manager to add Kingfisher to your project. Select File > Swift Packag

Heshan Yodagama 140 Dec 24, 2022