Skip to content

Repository files navigation

Screenshots

About Swift 4.2

The calendar with support for:

  • Horizontal and vertical swipe directions
  • Showing days out
  • Single and multi days selection
  • First weekday sunday or monday
  • Supplementary views
  • Localization

Example project

Take a look at the example project over here

Usage

In order to create calendar with horizontal scroll direction:

  1. Create storyboard with 2 UIViews
  2. Make the first one subclass of VAMonthHeaderView, it will represent the name of the month and the control buttons to switch between months

  1. Make the second view subclass of VAWeekDaysView, this view will display weekdays names

  1. I recommend that you specify your own calendar with the settings firstWeekday and timeZone to correctly display dates
letdefaultCalendar:Calendar={varcalendar=Calendar.current
calendar.firstWeekday =1
calendar.timeZone =TimeZone(secondsFromGMT:0)!
return calendar
}()
  1. Configure appearance of VAMonthHeaderView and VAWeekDaysView
@IBOutlet weak varmonthHeaderView:VAMonthHeaderView!{
didSet {letappereance=VAMonthHeaderViewAppearance(
previousButtonImage: #imageLiteral(resourceName:"previous"),
nextButtonImage: #imageLiteral(resourceName:"next"),
dateFormat:"LLLL")
monthHeaderView.delegate =self
monthHeaderView.appearance = appereance
}}@IBOutlet weak varweekDaysView:VAWeekDaysView!{
didSet {letappereance=VAWeekDaysViewAppearance(symbolsType:.veryShort, calendar: defaultCalendar)
weekDaysView.appearance = appereance
}}
  1. Setup VACalendarView
varcalendarView:VACalendarView!overridefunc viewDidLoad(){
super.viewDidLoad()letcalendar=VACalendar(calendar: defaultCalendar)
calendarView =VACalendarView(frame:.zero, calendar: calendar)
calendarView.showDaysOut =true
calendarView.selectionStyle =.multi
calendarView.monthDelegate = monthHeaderView
calendarView.dayViewAppearanceDelegate =self
calendarView.monthViewAppearanceDelegate =self
calendarView.calendarDelegate =self
calendarView.scrollDirection =.horizontal
view.addSubview(calendarView)}overridefunc viewDidLayoutSubviews(){
super.viewDidLayoutSubviews()if calendarView.frame ==.zero {
calendarView.frame =CGRect(
x:0,
y: weekDaysView.frame.maxY,
width: view.frame.width,
height: view.frame.height *0.6)
calendarView.setup()}}

Release Notes

Version 1.0

  • Release version.

Version 1.3

  • Added ability to define own date format for VAMonthView's month header by @spase84
  • Localization
  • Swift 4.2

Requirements

  • Swift 4.0
  • Xcode 9
  • iOS 10.0+

Installation

use_frameworks!pod'VACalendar'

License

VACalendar is released under an MIT License. See LICENSE for details.

About

Custom Calendar for iOS in Swift

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages