All Projects → matsune → Ymcalendar

matsune / Ymcalendar

Licence: mit
Monthly event calendar framework for iOS

Programming Languages

swift
15916 projects

Projects that are alternatives of or similar to Ymcalendar

Pest
Pest is an elegant PHP Testing Framework with a focus on simplicity
Stars: ✭ 3,712 (+1650.94%)
Mutual labels:  framework
Hapi
The Simple, Secure Framework Developers Trust
Stars: ✭ 13,632 (+6330.19%)
Mutual labels:  framework
Dntframeworkcore
Lightweight and Extensible Infrastructure for Building Web Applications - Web Application Framework
Stars: ✭ 208 (-1.89%)
Mutual labels:  framework
Hexnut
🔩 Hexnut is a middleware based, express/koa like framework for web sockets
Stars: ✭ 204 (-3.77%)
Mutual labels:  framework
Venom
Venom is the most complete javascript library for Whatsapp, 100% Open Source.
Stars: ✭ 3,457 (+1530.66%)
Mutual labels:  framework
Colly
Elegant Scraper and Crawler Framework for Golang
Stars: ✭ 15,535 (+7227.83%)
Mutual labels:  framework
Jbcalendardatepicker
A replacement for UIDatePicker made for Catalyst.
Stars: ✭ 203 (-4.25%)
Mutual labels:  calendar
Aqueduct
Dart HTTP server framework for building REST APIs. Includes PostgreSQL ORM and OAuth2 provider.
Stars: ✭ 2,412 (+1037.74%)
Mutual labels:  framework
Framework
ThinkPHP Framework
Stars: ✭ 2,399 (+1031.6%)
Mutual labels:  framework
Python Mocket
a socket mock framework - for all kinds of socket animals, web-clients included
Stars: ✭ 209 (-1.42%)
Mutual labels:  framework
Koolreport
This is an Open Source PHP Reporting Framework which you can use to write perfect data reports or to construct awesome dashboards using PHP
Stars: ✭ 204 (-3.77%)
Mutual labels:  framework
Transistor
Transistor, a Python web scraping framework for intelligent use cases.
Stars: ✭ 205 (-3.3%)
Mutual labels:  framework
Yii2
Yii 2: The Fast, Secure and Professional PHP Framework
Stars: ✭ 13,852 (+6433.96%)
Mutual labels:  framework
Crank
Write JSX-driven components with functions, promises and generators.
Stars: ✭ 2,487 (+1073.11%)
Mutual labels:  framework
Dayz
A calendar component for React
Stars: ✭ 210 (-0.94%)
Mutual labels:  calendar
Wolff
🐺 Lightweight and easy to use framework for building web apps.
Stars: ✭ 203 (-4.25%)
Mutual labels:  framework
Feathers
A framework for real-time applications and REST APIs with JavaScript and TypeScript
Stars: ✭ 13,761 (+6391.04%)
Mutual labels:  framework
Wcf
WoltLab Suite Core (previously WoltLab Community Framework)
Stars: ✭ 211 (-0.47%)
Mutual labels:  framework
Cloudopt Next
A simple and modern Java and Kotlin vert.x web framework
Stars: ✭ 211 (-0.47%)
Mutual labels:  framework
Moqui Framework
Use Moqui Framework to build enterprise applications based on Java. It includes tools for databases (relational, graph, document), local and web services, web and other UI with screens and forms, security, file/resource access, scripts, templates, l10n, caching, logging, search, rules, workflow, multi-instance, and integration.
Stars: ✭ 205 (-3.3%)
Mutual labels:  framework

Logo

Build Status Language Platform Carthage compatible Cocoapods License

YMCalendar

YMCalendar is a library of monthly event calendar for iOS written in Swift.

Screenshots

creen

GIF

Usage

Property

YMCalendarView has some instance properties like UICollectionView.

  • Scrollable both vertically and horizontally
  • Switching paging mode
  • Multiple selection mode
  var scrollDirection: YMScrollDirection
  var isPagingEnabled: Bool
  var allowsMultipleSelection: Bool
  • Customizable select and deselect animation.
enum YMSelectAnimation {
    case none, bounce, fade
}

var selectAnimation: YMSelectAnimation
var deselectAnimation: YMSelectAnimation
  • Customizable date range of calendarView.
func setDateRange(_ dateRange: DateRange?)

If you set nil for dateRange, it will be inifinite scroll calendar (default is nil).

Layout customization

Appearance protocol

YMCalendarView has appearance property of YMCalendarAppearance protocol which manages layout for YMCalendarView.
For example, color and width of grid lines, color and fonts of day labels on calendarView.

func horizontalGridColor(in view: YMCalendarView) -> UIColor
func horizontalGridWidth(in view: YMCalendarView) -> CGFloat
func verticalGridColor(in view: YMCalendarView) -> UIColor
func verticalGridWidth(in view: YMCalendarView) -> CGFloat
    
func dayLabelAlignment(in view: YMCalendarView) -> YMDayLabelAlignment
func calendarViewAppearance(_ view: YMCalendarView, dayLabelFontAtDate date: Date) -> UIFont
func calendarViewAppearance(_ view: YMCalendarView, dayLabelTextColorAtDate date: Date) -> UIColor
func calendarViewAppearance(_ view: YMCalendarView, dayLabelBackgroundColorAtDate date: Date) -> UIColor
func calendarViewAppearance(_ view: YMCalendarView, dayLabelSelectedTextColorAtDate date: Date) -> UIColor
func calendarViewAppearance(_ view: YMCalendarView, dayLabelSelectedBackgroundColorAtDate date: Date) -> UIColor

Gradient background

You can set gradient colors for background of YMCalendarView.

var gradientColors: [UIColor]?    
var gradientLocations: [NSNumber]?    
var gradientStartPoint: CGPoint    
var gradientEndPoint: CGPoint

Delegate

YMCalendarDelegate protocol methods will be called by your scrolling and selection actions. The methods of this protocol are all optional.

func calendarViewDidScroll(_ view: YMCalendarView)
func calendarView(_ view: YMCalendarView, didSelectDayCellAtDate date: Date)
func calendarView(_ view: YMCalendarView, didMoveMonthOfStartDate date: Date)
func calendarView(_ view: YMCalendarView, shouldSelectEventAtIndex index: Int, date: Date) -> Bool
func calendarView(_ view: YMCalendarView, didSelectEventAtIndex index: Int, date: Date)
func calendarView(_ view: YMCalendarView, shouldDeselectEventAtIndex index: Int, date: Date) -> Bool
func calendarView(_ view: YMCalendarView, didDeselectEventAtIndex index: Int, date: Date)

DataSource

An object that abopts YMCalendarDataSource protocol is responsible for provising the data and views about events of days.

func calendarView(_ view: YMCalendarView, numberOfEventsAtDate date: Date) -> Int
func calendarView(_ view: YMCalendarView, dateRangeForEventAtIndex index: Int, date: Date) -> DateRange?
func calendarView(_ view: YMCalendarView, eventViewForEventAtIndex index: Int, date: Date) -> YMEventView    

If you want to create original eventView, it should inherit YMEventView. You can dequeue the original eventView by registering to calendarView with identifier (Please see demo project).

EKEvent

If you want to use EventKit as a data source, create an instance of YMCalendarEKViewController. This superclass has calendarView and system of loading EKEvents. Please see EKEventKitViewController in demo project.

Installation

Carthage

github "matsune/YMCalendar"

CocoaPods

pod "YMCalendar"

Author

Yuma Matsune

License

YMCalendar is available under the MIT license. See the LICENSE file for more info.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].