/FSCalendar

A superiorly awesome iOS7+ calendar control, compatible with both Objective-c and Swift2

Primary LanguageObjective-CMIT LicenseMIT

fscalendar

Version Platform Swift2 compatible Carthage compatible License

Screenshots

iPhone

fscalendar

iPad

fscalendar-ipad

Installation

CocoaPods:

  • For iOS8+: 👍
use_frameworks!
pod 'FSCalendar'
  • For iOS7+:
pod 'FSCalendar'

Carthage:

  • For iOS8+
github "WenchaoIOS/FSCalendar"

Manually:

  • Drag all files under FSCalendar folder into your project. 👍

Support IBInspectable / IBDesignable

Only the methods marked "👍" support IBInspectable / IBDesignable feature. Have fun with Interface builder

Setup

Use Interface Builder

  1. Drag an UIView object to ViewController Scene
  2. Change the Custom Class to FSCalendar
  3. Link dataSource and delegate to the ViewController

fscalendar-ib

  1. Finally, you should implement FSCalendarDataSource and FSCalendarDelegate in ViewController.m

Or use code

@property (weak , nonatomic) FSCalendar *calendar;
// In loadView(Recommended) or viewDidLoad
FSCalendar *calendar = [[FSCalendar alloc] initWithFrame:CGRectMake(0, 0, 320, 300)];
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: 300))
calendar.dataSource = self
calendar.delegate = self
view.addSubview(calendar)
self.calendar = calendar

## Focus on selected date on ***week mode*** ![fscalendar-scope](https://cloud.githubusercontent.com/assets/5186464/12474251/aec94a32-c054-11e5-8b30-9e3d03d9a846.gif)

How to use

  • Use focusOnSingleSelectedDate, default is YES
calendar.focusOnSingleSelectedDate = YES;
  • Implement calendarCurrentScopeWillChange:animated:
- (void)calendarCurrentScopeWillChange:(FSCalendar *)calendar animated:(BOOL)animated
{
    CGFloat height = [calendar sizeThatFits:CGSizeZero].height;
    calendar.frame = CGRectMake(0, CGRectGetMaxY(self.navigationController.navigationBar.frame), self.view.bounds.size.width, height);
}
  • Try to change scope to week
[calendar setScope:FSCalendarScopeWeek animated:YES];
  • To change back
[calendar setScope:FSCalendarScopeMonth animated:YES];

Roll with Interface Builder

fscalendar - ibdesignable

More Usage

  • To view more usage, download the zip file and read the example.
  • Or you could refer to this document

If you like this repo

  • Star this repo.
  • Send your calendar screenshot or itunes link address here.

Support me via paypal

Contact

  • Email: f33chobits@gmail.com

License

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