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)