Giter VIP home page Giter VIP logo

fscalendar's Introduction

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: Unzip downloaded zip file, drag all files under FSCalendar-master/Pod/Classes to your project, make sure copy items if needed is checked.
#import "FSCalendar.h"

Setup

Use Interface Builder (Recommended)

  1. Drag an UIView object to ViewController Scene, change the Custom Class to FSCalendar
  2. After adjust the position and frame, link the dataSource and delegate to the ViewController
  3. Implement FSCalendarDataSource and FSCalendarDelegate in ViewController.m

Use code

@property (weak , nonatomic) FSCalendar *calendar;

// In loadView or viewDidLoad
FSCalendar *calendar = [[FSCalendar alloc] initWithFrame:CGRectMake(0, 0, 320, 280)];
calendar.dataSource = self;
calendar.delegate = self;
[self.view addSubview:calendar];
self.calendar = calendar;

Or swift
private weak var calendar: FSCalendar!

// In loadView or viewDidLoad
let calendar = FSCalendar(frame: CGRect(x: 0, y: 0, width: 320, height: 280))
calendar.dataSource = self
calendar.delegate = self
view.addSubview(calendar)
self.calenar = calendar

Donate

Core classes

FSCalendar

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

A delegate object to handle 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 (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 (strong, nonatomic) NSDate *currentDate;

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

@property (strong, nonatomic) NSDate *selectedDate;

Get the selected date of FSCalendar

@property (strong, 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 (strong, nonatomic) UIColor *titleDefaultColor UI_APPEARANCE_SELECTOR;

The day text color for default state.

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

The day text color for selection state.

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

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

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

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

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

The day text color where the date is weekend.

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

The subtitle text color for default state.

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

The subtitle text color for selection state.

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

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

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

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

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

The subtitle text color where the date is weekend.

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

The cell background color for selection state.

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

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

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

The text color for FSCalendarHeader.

@property (strong, 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.

- (NSDate *)minimumDateForCalendar:(FSCalendar *)calendar;

Provides a left boundary for calendar

- (NSDate *)maximumDateForCalendar:(FSCalendar *)calendar;

Provides a right boundary for calendar

Requirements

ios 7.0

Compatibility

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

Version notes

Version 0.8.0

  • Smooth scrolling
  • Add example of setup FSCalendar in loadView and viewDidLoad

Version 0.7.0

  • Simplier initialization: No more FSCalendarHeader, use headerHeight to control the size of header.

Version 0.6.0

  • Add minmumDate and maximumDate in FSCalendarDataSource
  • Fix weekstarday issue

Version 0.5.4

  • Fix cell wrapping problem
  • Fix problem while adding FSCalendar in viewDidLoad(cause by adjust scroll inset)

Version 0.5.3

  • Fix month-jumping problem on orientation changed #16
  • Fix issue #20

Version 0.5.2

  • Fix lunar problem in demo project
  • Fix issue #18

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.

Support

  • If FSCalendar cannot meet your requirment, welcome to submit issues or pull requests
  • If you like this control and use it in your app, submit your app's link address here.It would be a great support for me.

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.