Skip to content

A powerful ios calendar view with subtitle and smooth scrolling supported,written in Objective-C

License

Notifications You must be signed in to change notification settings

ConnectThink/FSCalendar

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

fscalendar

Version License Platform

Example

fscalendar1          

Horizontal flow

fscalendar-horizontal

Vertical flow

fscalendar-vertical

Select a date Manually

fscalendar-selected-date

Installation

  • Using cocoapods:pod 'FSCalendar'
  • Manually: Drag all .h and .m files in FSCalendar group to your project
#import "FSCalendar.h"

Setup

Use Interface Builder (Recommended)

  1. Drag two UIView objects to ViewController Scene, change the Custom Class to FSCalendarHeader and FSCalendar
    fscalendar-storyboard1
    fscalendar-storyboard2

2. After adjust the position and frame, link `header` property of the calendar to the header, and the `dataSource` and `delegate` to the ViewController
![fscalendar-storyboard3](https://cloud.githubusercontent.com/assets/5186464/6655159/ac02925a-cb2b-11e4-885e-a287ad5c7769.png) 3. Implement `FSCalendarDataSource` and `FSCalendarDelegate` in ViewController.m

Use code

In viewDidLoad (or loadView) of ViewController.m

FSCalendarHeader *header = [[FSCalendarHeader alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
[self.view addSubview:header];
FSCalendar *calendar = [[FSCalendar alloc] initWithFrame:CGRectMake(0, 44, 320, 280)];
calendar.header = header;
calendar.dataSource = self;
calendar.delegate = self;
[self.view addSubview:calendar];
self.calendar = calendar;

Core classes

FSCalendar

@property (weak, nonatomic) IBOutlet id<FSCalendarDelegate> delegate;

A delegate object to handle common user tap/scroll event, see FSCalendarDelegate for details.

@property (weak, nonatomic) IBOutlet id<FSCalendarDataSource> dataSource;

A dataSource object to provide subtitle, event dot or other sources, see FSCalendarDataSource for details.

@property (weak, nonatomic) IBOutlet FSCalendarHeader *header;

An UIView subclass which afford a scrolling effect for month symbol.

@property (assign, nonatomic) FSCalendarFlow flow;

An enumeration value to determine the scroll direction of FSCalendar, default value is FSCalendarFlowHorizontal

@property (assign, nonatomic) BOOL autoAdjustTitleSize;

The text size of FSCalendar is automaticly calculated based on the frame by default. To turn it off, set this value to NO.

@property (copy, nonatomic) NSDate *currentDate;

The current date of calendar, default is [NSDate date];

@property (readonly, nonatomic) NSDate *selectedDate;

Get the selected date of FSCalendar

@property (readonly, nonatomic) NSDate *currentMonth;

Get the current month of FSCalendar.Extract it with NSDateComponents, or currentMonth.fs_month and currentMonth.fs_year

@property (assign, nonatomic) FSCalendarCellStyle cellStyle UI_APPEARANCE_SELECTOR;

The background style for today and selected cell, default is FSCalendarCellStyleCircle.

@property (strong, nonatomic) UIFont   *titleFont UI_APPEARANCE_SELECTOR;

The font for day text. To change the font size, set autoAdjustTitleSize to NO

@property (strong, nonatomic) UIFont   *subtitleFont UI_APPEARANCE_SELECTOR;

The font for subtitle text. To change the font size, set autoAdjustTitleSize to NO

@property (strong, nonatomic) UIFont   *weekdayFont UI_APPEARANCE_SELECTOR;

The font for weekday text. To change the font size, set autoAdjustTitleSize to NO

@property (strong, nonatomic) UIFont   *headerTitleFont UI_APPEARANCE_SELECTOR;

The font for scrolling header text. To change the font size, set autoAdjustTitleSize to NO

@property (strong, nonatomic) UIColor  *eventColor UI_APPEARANCE_SELECTOR;

The color for event dot.

@property (strong, nonatomic) UIColor  *weekdayTextColor UI_APPEARANCE_SELECTOR;

The text color of weekday.

@property (nonatomic) UIColor *titleDefaultColor UI_APPEARANCE_SELECTOR;

The day text color for default state.

@property (nonatomic) UIColor *titleSelectionColor UI_APPEARANCE_SELECTOR;

The day text color for selection state.

@property (nonatomic) UIColor *titleTodayColor UI_APPEARANCE_SELECTOR;

The day text color where the date is equal to currentDate.

@property (nonatomic) UIColor *titlePlaceholderColor UI_APPEARANCE_SELECTOR;

The day text color where the date is not in currentMonth.

@property (nonatomic) UIColor *titleWeekendColor UI_APPEARANCE_SELECTOR;

The day text color where the date is weekend.

@property (nonatomic) UIColor *subtitleDefaultColor UI_APPEARANCE_SELECTOR;

The subtitle text color for default state.

@property (nonatomic) UIColor *subtitleSelectionColor UI_APPEARANCE_SELECTOR;

The subtitle text color for selection state.

@property (nonatomic) UIColor *subtitleTodayColor UI_APPEARANCE_SELECTOR;

The subtitle text color where the date is equal to currentDate.

@property (nonatomic) UIColor *subtitlePlaceholderColor UI_APPEARANCE_SELECTOR;

The subtitle text color where the date is not in currentMonth.

@property (nonatomic) UIColor *subtitleWeekendColor UI_APPEARANCE_SELECTOR;

The subtitle text color where the date is weekend.

@property (nonatomic) UIColor *selectionColor UI_APPEARANCE_SELECTOR;

The cell background color for selection state.

@property (nonatomic) UIColor *todayColor UI_APPEARANCE_SELECTOR;

The cell background color where the date is equal to currentDate.

@property (nonatomic) UIColor  *headerTitleColor UI_APPEARANCE_SELECTOR;

The text color for FSCalendarHeader.

@property (nonatomic) NSString *headerDateFormat UI_APPEARANCE_SELECTOR;

The date format for FSCalendarHeader.

FSCalendarDataSource

- (NSString *)calendar:(FSCalendar *)calendar subtitleForDate:(NSDate *)date;

To provide a subtitle right below the day digit.

- (BOOL)calendar:(FSCalendar *)calendar hasEventForDate:(NSDate *)date;

To provide an event dot below the day cell.

FSCalendarDelegate

- (BOOL)calendar:(FSCalendar *)calendar shouldSelectDate:(NSDate *)date;

To determine whether the day cell should be selected and show the selection layer.

- (void)calendar:(FSCalendar *)calendar didSelectDate:(NSDate *)date;

This method would execute after a cell is managed to be selected and show the selection layer.

- (void)calendarCurrentMonthDidChange:(FSCalendar *)calendar;

This method would execute when calendar month page is changed.

Requirements

ios 7.0

Compatibility

FSCalendar is also tested on iPad device, see the demo for details.

Version notes

Version 0.5.1

  • Fix issue for different timeZone #14
  • Fix date-calculation problem while changing firstWeekday
  • Fix problem about setting flow in viewDidLoad #15

Version 0.5

  • Make currentMonth writable. FSCalendar will show currentMonth after it is set.
  • Add firstWeekday property. If you want the first day of week to be Monday, just set this property to 2, just like NSCalendar.
  • Add some performace improvements and code optimization.

Version 0.4

  • Make selectedDate writable. FSCalendar will select selectedDate and show the corresponding month

Version 0.3

  • Improve scrolling performance

Version 0.2

  • Improve cell rendering performance

Version 0.1

  • The first release

Known issues

  1. The title size changed as we change frame size of FSCalendar: Automatically adjusting font size based on frame size is default behavior of FSCalendadr, to disable it:
self.calendar.autoAdjustTitleSize = NO; 
self.calendar.titleFont = otherTitleFont;
self.calendar.subtitleFont = otherSubtitleFont;

titleFont and subtitleFont is also available for UIAppearance selector, but would not take any effect if autoAdjustTitleSize value is YES

Author

Wenchao Ding, [email protected]

License

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

Others

  • If FSCalendar cannot meet your requirment, welcome to submit issues or pull request
  • If you are using this library and using custom color modulation, please take a screenshot for your calendar appearance here, this will help others better matching color in their apps, thanks

About

A powerful ios calendar view with subtitle and smooth scrolling supported,written in Objective-C

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Objective-C 73.8%
  • C 20.7%
  • Shell 4.5%
  • Other 1.0%