JTCalendar
JTCalendar is a calendar control for iOS easily customizable.
JTCalendar 是一個很容易定制的日歷的控件。



Usage
You have to create two views in your UIViewController.
你需要在你的UIViewController創建出兩個view。
The first view is JTCalendarMenuView, it represents the months.
第一個view是JTCalendarMenuView,他代表着月份。
The second view is JTCalendarContentView, the calendar itself.
第二個view是JTCalendarContentView,這個是日歷本身。
Your UIViewController must implement JTCalendarDataSource
你的UIViewController 必須實現JTCalendarDataSource代理。
#import <UIKit/UIKit.h> #import "JTCalendar.h" @interface ViewController : UIViewController<JTCalendarDataSource> @property (weak, nonatomic) IBOutlet JTCalendarMenuView *calendarMenuView; @property (weak, nonatomic) IBOutlet JTCalendarContentView *calendarContentView; @property (strong, nonatomic) JTCalendar *calendar; @end
JTCalendar is used to coordinate calendarMenuView and calendarContentView.
JTCalendar 是用來定位calendarMenuView與 calendarContentView的。
@implementation ViewController
- (void)viewDidLoad { [super viewDidLoad]; self.calendar = [JTCalendar new]; [self.calendar setMenuMonthsView:self.calendarMenuView]; [self.calendar setContentView:self.calendarContentView]; [self.calendar setDataSource:self]; } - (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; [self.calendar reloadData]; // Must be call in viewDidAppear } - (BOOL)calendarHaveEvent:(JTCalendar *)calendar date:(NSDate *)date { return NO; } - (void)calendarDidDateSelected:(JTCalendar *)calendar date:(NSDate *)date { NSLog(@"%@", date); } @end
切換到week
If you want see just one week at time you can switch when you want between the weekMode.
如果你只想看一周的時間,你可以切換到weekMode模式
self.calendar.calendarAppearance.isWeekMode = YES;
[self.calendar reloadAppearance];
注意
When you change the mode, it doesn't change the height of calendarContentView, you have to do it yourself. See the project in example for more details.
當你切換樣式時,他並沒有改變calendarContentView的高度,你需要自己手動設置。你可以在項目中找到實現細節。
自定義設計
You have a lot of options available for personnalize the design. Check the JTCalendarAppearance.h file for see all options.
你有這很多很多的選項來定制設計。你可以再JTCalendarAppearance.h文件中找到這些配置選項。
self.calendar.calendarAppearance.calendar.firstWeekday = 2; // Monday self.calendar.calendarAppearance.ratioContentMenu = 1.; self.calendar.calendarAppearance.menuMonthTextColor = [UIColor whiteColor]; self.calendar.calendarAppearance.dayCircleColorSelected = [UIColor blueColor]; self.calendar.calendarAppearance.dayTextColorSelected = [UIColor whiteColor]; [self.calendar reloadAppearance];
推薦用法
The call to reloadAppearance is expensive, reloadAppearance is call by setMenuMonthsView andsetContentView.
調用reloadAppearance 開銷很大,setMenuMonthsView 與andsetContentView會調用reloadAppearance 方法
For better performance define the appearance just after instanciate JTCalendar.
BAD example:
self.calendar = [JTCalendar new];
[self.calendar setMenuMonthsView:self.calendarMenuView]; [self.calendar setContentView:self.calendarContentView]; [self.calendar setDataSource:self]; self.calendar.calendarAppearance.calendar.firstWeekday = 2; // Monday self.calendar.calendarAppearance.ratioContentMenu = 1.; self.calendar.calendarAppearance.menuMonthTextColor = [UIColor whiteColor]; self.calendar.calendarAppearance.dayCircleColorSelected = [UIColor blueColor]; self.calendar.calendarAppearance.dayTextColorSelected = [UIColor whiteColor]; [self.calendar reloadAppearance]; // You have to call reloadAppearance
GOOD example:
self.calendar = [JTCalendar new];
self.calendar.calendarAppearance.calendar.firstWeekday = 2; // Monday self.calendar.calendarAppearance.ratioContentMenu = 1.; self.calendar.calendarAppearance.menuMonthTextColor = [UIColor whiteColor]; self.calendar.calendarAppearance.dayCircleColorSelected = [UIColor blueColor]; self.calendar.calendarAppearance.dayTextColorSelected = [UIColor whiteColor]; [self.calendar setMenuMonthsView:self.calendarMenuView]; [self.calendar setContentView:self.calendarContentView]; [self.calendar setDataSource:self]; // You don't have to call reloadAppearance
You may also want to open your calendar on a specific date, by defaut it's [NSDate date].
你也許想在打開日歷的時候定位到指定的日期,默認值是[NSDate date]
[self.calendar setCurrentDate:myDate];
- iOS 7 or higher
- Automatic Reference Counting (ARC)
