Git Product home page Git Product logo

crispycalendar's Introduction

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

  • Getting Started contains framework overview and describes basic concepts.
  • Common usage patterns and various examples of code can be found in Examples directory.
  • Demo project.
  • API Reference contains detailed descriptions of the vast majority of public & open types and identifiers.
  • Internals Reference lays out a number of internal design decisions and rationale. Its completeness is far from ideal but there is an ongoing work.

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.0'
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.

DefaultBasic from Debt ControlInput 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 selectionDays 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 selectionOrdered 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 limitingColumned 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.

crispycalendar's People

Contributors

byss avatar

Stargazers

MohsinAli avatar

Watchers

MohsinAli avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.