关于JTCalendar的使用详解

JTCalendar是一个可自定义性高,功能强大的日历类库,我们可以改变日历样式,选中日期的多选和单选等功能,

下面将介绍JTCalendar的基本使用方法;

附上Git地址:https://github.com/jonathantribouharet/JTCalendar

在你添加日历控件的ViewController中

你需要在你的UIViewController创建出两个view。

第一个view是JTCalendarMenuView,他代表着月份。

第二个view是JTCalendarContentView,这个是日历本身。

[objc]  view plain  copy
  1. _calendarManager.dateHelper.calendar.firstWeekday = 2;//设置第一列为周一  
  2. [_calendarManager setMenuView:_calendarMenuView];  
  3. [_calendarManager setContentView:_calendarContentView];  
  4. [_calendarManager setDate:[NSDate date]];  

  // 日历的设置

    currentPageMonth = [[NSDateComponents alloc] init];

    _calendarManager = [JTCalendarManager new];

    _calendarManager.delegate = self;

    [_calendarManager setMenuView:_calendarMenuView];

    [_calendarManager setContentView:_calendarContentView];

    [_calendarManager setDate:[NSDate date]];

改变日历样式

[objc]  view plain  copy
  1. - (void)calendar:(JTCalendarManager *)calendar prepareDayView:(JTCalendarDayView *)dayView{  
  2.   
  3. if([dayView isFromAnotherMonth]){//是否显示上个月和下个月的日期  
  4. //        dayView.hidden = YES;  
  5.         dayView.circleView.hidden = YES;  
  6.           
  7.         dayView.backgroundColor = [UIColor whiteColor];  
  8.           
  9.         dayView.labNumber.hidden = YES;  
  10.           
  11.         dayView.textLabel.textColor = [UIColor colorWithHexString:@"CCCCCC"];  
  12.     }  
  13.   
  14.   
  15.  dayView.backgroundColor = [UIColor whiteColor];//每一日期格子的view;  
  16.  dayView.textLabel.textColor = [UIColor colorWithHexString:@"CCCCCC"];//日期数字label,课改变字体颜色,大小等  
  17. if([_calendarManager.dateHelper date:[NSDate date] isTheSameDayThan:dayView.date]){//设置今天的日期样式,比如显示为今天,改变字体颜色  
  18.         dayView.circleView.hidden = YES;//是否显示小圆点  
  19.   
  20.         dayView.textLabel.text = @"今天";  
  21.           
  22.         dayView.textLabel.textColor = [UIColor colorWithHexString:@"13C56D"];  
  23.           
  24.         dayView.labNumber.textColor = [UIColor colorWithHexString:@"666666"];  
  25. }  
  26. if (_dateSelected && [_calendarManager.dateHelper date:_dateSelected isTheSameDayThan:dayView.date]) {//选中日期  
  27.   
  28. }  
  29.   
  30. if([self haveEventForDay:dayView.date]){//当前日期是否有事件,我舍弃了小圆点,自定义显示了有几条信息  
  31.         dayView.dotView.hidden = NO;  
  32.     }  
  33.     else{  
  34.         dayView.dotView.hidden = YES;  
  35.     }  
  36. if ([_calendarManager.dateHelper date:[NSDate date] isEqualOrAfter:dayView.date]   
  37. && ![_calendarManager.dateHelper date:[NSDate date] isTheSameDayThan:dayView.date]) {//今天之前日期(改变字体颜色,等等,我们的需求是要改)  
  38. }  
  39.  }  


- (void)calendar:(JTCalendarManager *)calendar prepareDayView:(JTCalendarDayView *)dayView

{

    dayView.hidden = NO;

    

    // Other month

    if([dayView isFromAnotherMonth]){

        dayView.hidden = YES;

    }

    // Today

    else if([_calendarManager.dateHelper date:[NSDate date] isTheSameDayThan:dayView.date]){

        dayView.circleView.hidden = NO;

        dayView.circleView.backgroundColor = [UIColor blueColor];

        dayView.dotView.backgroundColor = [UIColor whiteColor];

        dayView.textLabel.textColor = [UIColor whiteColor];

    }

    // Selected date

    else if(_dateSelected && [_calendarManager.dateHelper date:_dateSelected isTheSameDayThan:dayView.date]){

        dayView.circleView.hidden = NO;

        dayView.circleView.backgroundColor = [UIColor redColor];

        dayView.dotView.backgroundColor = [UIColor whiteColor];

        dayView.textLabel.textColor = [UIColor whiteColor];

    }

    // Another day of the current month

    else{

        dayView.circleView.hidden = YES;

        dayView.dotView.backgroundColor = [UIColor redColor];

        dayView.textLabel.textColor = [UIColor blackColor];

    }

    

    if([self haveEventForDay:dayView.date]){

        dayView.dotView.hidden = NO;

    }

    else{

        dayView.dotView.hidden = YES;

    }

}


//


/** 改变样式 */

-(void)calendar:(JTCalendarManager *)calendar prepareDayView:(JTCalendarDayView *)dayView

{

   

    if (latestDate != calendar.date) {

        NSDateComponents* latestComponents = [[NSCalendar currentCalendar] components:NSCalendarUnitDay | NSCalendarUnitMonth | NSCalendarUnitYear fromDate:calendar.date];


        if (latestComponents.year != currentPageMonth.year ||

            latestComponents.month != currentPageMonth.month) {

            

            currentPageMonth.year = latestComponents.year;

            currentPageMonth.month = latestComponents.month;


        }

        

        latestDate = calendar.date;

    }

    

    dayView.hidden = NO;

    dayView.dotView.hidden = YES;

    dayView.circleView.hidden = NO;

    dayView.circleView.backgroundColor = colorDefBG;

    

    if([_calendarManager.dateHelper date:[NSDate date] isTheSameDayThan:dayView.date]){

        // 当日

        dayView.userInteractionEnabled = YES;

        

        dayView.circleView.backgroundColor = colorTodayBG;

        dayView.textLabel.textColor = colorTodayText;

        

//        if([self haveEventForDay:dayView.date]){

//            // 有数据时用圆圈表示

//            dayView.dotView.hidden = NO;

//            dayView.dotView.backgroundColor = colorTodayDot;

//        }

        

    } else if([_calendarManager.dateHelper date:[NSDate date] isEqualOrAfter:dayView.date]) {

        // 过去的时间

        dayView.userInteractionEnabled = YES;

        

        dayView.textLabel.textColor = colorPastText;

        

        

    } else {

        // 以后的时间

        dayView.textLabel.textColor = colorFutureText;

        dayView.userInteractionEnabled = NO;

    }

    

    if(![_calendarManager.dateHelper date:_calendarContentView.date isTheSameMonthThan:dayView.date]){

        

        // 当月以外的日期背景,文字的设置

        

        dayView.textLabel.textColor = colorOtherText;


        dayView.circleView.backgroundColor = colorOtherBG;


    }

}


/

iOS时间那点事

NSCalendar + NSDateComponents

  1. 历法能使人类确定每一日再无限的时间中的确切位置并记录历史。
  2. 日历,历法,一般历法都是遵循固定的规则的,具有周期性。日历都是已知的或可预测的。
  3. 任何一种具体的历法,首先必须明确规定起始点,即开始计算的年代,这叫“纪元”;以及规定一年的开端,这叫“岁首”。此外,还要规定每年所含的日数,如何划分月份,每月有多少天等等。
  4. NSCalendar对世界上现存的常用的历法进行了封装,既提供了不同历法的时间信息,又支持日历的计算。
  5. NSDateFomatter表示的时间默认以公历(即阳历)为参考,可以通过设置calendar属性变量获得特定历法下的时间表示。
  6. NSDate是独立与任何历法的,它只是时间相对于某个时间点的时间差;NSDate是进行日历计算的基础。
  7. NSDateComponents将时间表示成适合人类阅读和使用的方式,通过NSDateComponents可以快速而简单地获取某个时间点对应的“年”,“月”,“日”,“时”,“分”,“秒”,“周”等信息。当然一旦涉及了年月日时分秒就要和某个历法绑定,因此NSDateComponents必须和NSCalendar一起使用,默认为公历。
  8. NSDateComponents除了像上面说的表示一个时间点外,还可以表示时间段,例如:两周,三个月,20年,7天,10分钟,50秒等等。时间段用于日历的计算,例如:获取当前历法下,三个月前的某个时间点。
  9. 可以说,要获取某个时间点在某个历法下的表示,需要NSDateComponents;要计算当前时间点在某个历法下对应的一个时间段前或后的时间点,需要NSDateComponents。
  10. NSDateComponents返回的day, week, weekday, month, year这一类数据都是从1开始的。因为日历是给人看的,不是给计算机看的,从0开始就是个错误。
NSDateComponents实例化的方式
第一种:
    <!-- lang: cpp -->
//    先定义一个遵循某个历法的日历对象
NSCalendar *greCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
//    通过已定义的日历对象,获取某个时间点的NSDateComponents表示,并设置需要表示哪些信息(NSYearCalendarUnit, NSMonthCalendarUnit, NSDayCalendarUnit等)
NSDateComponents *dateComponents = [greCalendar components:NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit | NSWeekCalendarUnit | NSWeekdayCalendarUnit | NSWeekOfMonthCalendarUnit | NSWeekOfYearCalendarUnit fromDate:[NSDate date]];
NSLog(@"year(年份): %i", dateComponents.year);
NSLog(@"quarter(季度):%i", dateComponents.quarter);
NSLog(@"month(月份):%i", dateComponents.month);
NSLog(@"day(日期):%i", dateComponents.day);
NSLog(@"hour(小时):%i", dateComponents.hour);
NSLog(@"minute(分钟):%i", dateComponents.minute);
NSLog(@"second(秒):%i", dateComponents.second);

//    Sunday:1, Monday:2, Tuesday:3, Wednesday:4, Friday:5, Saturday:6
NSLog(@"weekday(星期):%i", dateComponents.weekday);

//    苹果官方不推荐使用week
NSLog(@"week(该年第几周):%i", dateComponents.week);
NSLog(@"weekOfYear(该年第几周):%i", dateComponents.weekOfYear);
NSLog(@"weekOfMonth(该月第几周):%i", dateComponents.weekOfMonth);

若获取dateComponents对象时,设置components的时候未添加NSYearCalendarUnit,dateComponents.year将返回错误的数值,其他的也一样,所以使用NSDateComponents表示时间时,要确保需要使用的数据都在componets中添加了。

第二种:
    <!-- lang: cpp -->
//    先定义一个遵循某个历法的日历对象
NSCalendar *greCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];

//    定义一个NSDateComponents对象,设置一个时间点
NSDateComponents *dateComponentsForDate = [[NSDateComponents alloc] init];
[dateComponentsForDate setDay:6];
[dateComponentsForDate setMonth:5];
[dateComponentsForDate setYear:2004];

//    根据设置的dateComponentsForDate获取历法中与之对应的时间点
//    这里的时分秒会使用NSDateComponents中规定的默认数值,一般为0或1。
NSDate *dateFromDateComponentsForDate = [greCalendar dateFromComponents:dc];




//    定义一个NSDateComponents对象,设置一个时间段
NSDateComponents *dateComponentsAsTimeQantum = [[NSDateComponents alloc] init];
[dateComponentsForDate setDay:6];

//    在当前历法下,获取6天后的时间点
NSDate *dateFromDateComponentsAsTimeQantum = [greCalendar dateByAddingComponents:dateComponentsAsTimeQantum toDate:[NSDate date] options:0];
第三种:
    <!-- lang: cpp -->
//    先定义一个遵循某个历法的日历对象
NSCalendar *greCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];

//    根据两个时间点,定义NSDateComponents对象,从而获取这两个时间点的时差
NSDateComponents *dateComponents = [greCalendar components:NSYearCalendarUnit fromDate:[NSDate dateWithTimeIntervalSince1970:0] toDate:[NSDate date] options:0];
NSLog(@"number of years:%i", dateComponents.year);
NSCalendar中比较重要的方法和概念
firstWeekday

firstWeekday是大家比较容易浑淆的东西。

大家在使用dateComponents.weekday获取某天对应的星期时,会发现,星期日对应的值为1,星期一对应的值为2,星期二对应的值为3,依次递推,星期六对应的值为7,这与我们平时理解的方式不一样。然后,我们就开始找是不是可以设置这种对应关系。终于,我们在NSCalendar中发现了firstWeekday这个变量,从字面意思上看貌似就是我们寻找的那个东西。可是,设置过firstWeekday后,我们又发现完全没有作用,真是郁闷啊!其实,大家不必郁闷,因为郁闷也没用,iOS中规定的就是周日为1,周一为2,周二为3,周三为4,周四为5,周五为6,周六为7,无法通过某个设置改变这个事实的,只能在使用的时候注意一下这个规则了。那firstWeekday是干什么用的呢?大家设置一下firstWeekday,再获取一下dateComponents.weekOfYear或dateComponents.weekOfMonth,看看返回的数据是否发生了变化。firstWeekday的作用确实是修改当前历法中周的起始位置,但是不能修改周日对应的数值,只能修改一年或一个月中周的数量,以及周的次序。

-(NSRange)rangeOfUnit:(NSCalendarUnit)smaller inUnit:(NSCalendarUnit)larger forDate:(NSDate *)date;
答疑解惑:
  1. Unit:单元
  2. NSRange:

    typedef struct _NSRange {

         NSUInteger location;
        NSUInteger length;
    

    } NSRange;

我们大致可以理解为:某个时间点所在的“小单元”,在“大单元”中的数量(返回值range的location属性变量的值一般是错误的)。例如:

            <!-- lang: cpp -->
    //    当前时间对应的月份中有几天
    [[NSCalendar currentCalendar] rangeOfUnit:NSDayCalendarUnit inUnit:NSMonthCalendarUnit forDate:[NSDate date]].length;
    //    当前时间对应的月份中有几周(前面说到的firstWeekday会影响到这个结果)
    [[NSCalendar currentCalendar] rangeOfUnit:NSWeekCalendarUnit inUnit:NSMonthCalendarUnit forDate:[NSDate date]].length;
-(NSUInteger)ordinalityOfUnit:(NSCalendarUnit)smaller inUnit:(NSCalendarUnit)larger forDate:(NSDate *)date;

我们大致可以理解为:某个时间点所在的“小单元”,在“大单元”中的位置(从1开始)。例如:

           <!-- lang: cpp -->
    //    当前时间对应的周是当前年中的第几周
    [[NSCalendar currentCalendar] ordinalityOfUnit:NSWeekOfYearCalendarUnit inUnit:NSYearCalendarUnit forDate:self];
    [[NSCalendar currentCalendar] ordinalityOfUnit:NSWeekCalendarUnit inUnit:NSYearCalendarUnit forDate:[NSDate date]];

    //    当前时间对应的周是当前月中的第几周
    [[NSCalendar currentCalendar] ordinalityOfUnit:NSWeekOfMonthCalendarUnit inUnit:NSYearCalendarUnit forDate:self];
    [[NSCalendar currentCalendar] ordinalityOfUnit:NSWeekCalendarUnit inUnit:NSMonthCalendarUnit forDate:[NSDate date]];

在这里:NSWeekOfYearCalendarUnit, NSWeekOfMonthCalendarUnit与NSWeekCalendarUnit的使用结果相同,为了避免浑淆,建议在此处使用NSWeekCalendar,而定义NSDateComponents时使用NSWeekOfYearCalendarUnit和NSWeekOfMonthCalendarUnit。

-(BOOL)rangeOfUnit:(NSCalendarUnit)unit startDate:(NSDate *)datep interval:(NSTimeInterval )tip forDate:(NSDate *)date;

我们大致可以理解为:“某个时间点”所在的“单元”的起始时间,以及起始时间距离“某个时间点”的时差(单位秒)。例如:

    <!-- lang: cpp -->
    NSDate *startDateOfYear;
    NSDate *startDateOfMonth;
    NSDate *startDateOfWeek;
    NSDate *startDateOfDay;
    NSTimeInterval TIOfYear;
    NSTimeInterval TIOfMonth;
    NSTimeInterval TIOfWeek;
    NSTimeInterval TIOfDay;
    [[NSCalendar currentCalendar] rangeOfUnit:NSYearCalendarUnit startDate:&startDateOfYear interval:&TIOfYear forDate:[NSDate date]];
    [[NSCalendar currentCalendar] rangeOfUnit:NSMonthCalendarUnit startDate:&startDateOfMonth interval:&TIOfMonth forDate:[NSDate date]];
    [[NSCalendar currentCalendar] rangeOfUnit:NSWeekCalendarUnit startDate:&startDateOfWeek interval:&TIOfWeek forDate:[NSDate date]];
    [[NSCalendar currentCalendar] rangeOfUnit:NSDayCalendarUnit startDate:&startDateOfDay interval:&TIOfDay forDate:[NSDate date]];
    NSLog(@"firstDateOfYear:%@, FirstDateOfMonth:%@, FirstDateOfWeek:%@, FirstDateOfDay:%@", startDateOfYear, startDateOfMonth, startDateOfWeek, startDateOfDay);
    NSLog(@"TIOfYear:%f, TIOfMonth:%f, TIOfWeek:%f, TIOfDay:%f", TIOfYear, TIOfMonth, TIOfWeek, TIOfDay);


切换到上一页下一页所执行的代理事件

[objc]  view plain  copy
  1. - (void)calendarDidLoadNextPage:(JTCalendarManager *)calendar//下个月  
  2. {  
  3.     //    NSLog(@"Next page loaded");  
  4.       
  5.     //[self loadData:[calendar date] andChangePage:YES];//从服务器请求下个月的事件  
  6.   
  7.     //[self refreshCalendar:[calendar date]];  
  8. }  
  9.   
  10. - (void)calendarDidLoadPreviousPage:(JTCalendarManager *)calendar//上个月  
  11. {  
  12.     //    NSLog(@"Previous page loaded");  
  13.       
  14.      
  15. }  

日期点击事件

[objc]  view plain  copy
  1. - (void)calendar:(JTCalendarManager *)calendar didTouchDayView:(JTCalendarDayView *)dayView  
  2. {  
  3.     _dateSelected = dayView.date;  
  4.       
  5.     [self loadClassList:dayView.date];  
  6.   
  7.     // Animation for the circleView  
  8.     dayView.circleView.transform = CGAffineTransformScale(CGAffineTransformIdentity, 0.10.1);  
  9.     [UIView transitionWithView:dayView  
  10.                       duration:.3  
  11.                        options:0  
  12.                     animations:^{  
  13.                         dayView.circleView.transform = CGAffineTransformIdentity;  
  14.                         [_calendarManager reload];  
  15.                     } completion:nil];  
  16.       
  17.       
  18.     // Don't change page in week mode because block the selection of days in first and last weeks of the month  
  19.     if(_calendarManager.settings.weekModeEnabled){  
  20.         return;  
  21.     }  
  22.       
  23.     // Load the previous or next page if touch a day from another month  
  24.       
  25.     if(![_calendarManager.dateHelper date:_calendarContentView.date isTheSameMonthThan:dayView.date]){  
  26.         if([_calendarContentView.date compare:dayView.date] == NSOrderedAscending){  
  27.             [_calendarContentView loadNextPageWithAnimation];  
  28.         }  
  29.         else{  
  30.             [_calendarContentView loadPreviousPageWithAnimation];  
  31.         }  
  32.     }  
  33. }  

下面是改变日历显示多少行的问题,有时候日期的最后一天是在第六行,有的时候是第五行,所以产品会让我们动态改变日历的高度


我们可以在JTCalendarPageView.m中做一些改动,然后会日历会自动隐藏和显示最后一行

找到reload这个方法,将

_numberOfWeeksDisplayed = MIN([_manager.dateHelper numberOfWeeks:_date], MAX_WEEKS_BY_MONTH);
        if(_numberOfWeeksDisplayed == 0){
            _numberOfWeeksDisplayed = [_manager.dateHelper numberOfWeeks:_date];
        }

改成

 _numberOfWeeksDisplayed = MIN(0, MAX_WEEKS_BY_MONTH);
        if(_numberOfWeeksDisplayed == 0){
            _numberOfWeeksDisplayed = [_manager.dateHelper numberOfWeeks:_date];
        }


然后在layoutSubviews方法中加上这句话

[objc]  view plain  copy
  1. - (void)layoutSubviews  
  2. {      
  3.     [super layoutSubviews];  
  4.   
  5.     if(!_weeksViews){  
  6.         return;  
  7.     }  
  8.       
  9.       
  10.     float hight = 0.0;  
  11.     if ([_manager.dateHelper numberOfWeeks:self.manager.date] == 5) {  
  12.         hight = (Winth - 20)/77 * 6;  
  13.     }else{  
  14.         hight = Winth - 20;  
  15.           
  16.     }  
  17.     self.frame = CGRectMake(self.frame.origin.xself.frame.origin.y, (Winth - 20), hight);  
  18.     CGFloat y = 0;  
  19.     CGFloat weekWidth = self.frame.size.width;  
  20.     if(_manager.settings.pageViewHaveWeekDaysView){  
  21.         CGFloat weekDayHeight = _weekDayView.frame.size.height// Force use default height  
  22.           
  23.         if(weekDayHeight == 0){ // Or use the same height than weeksViews  
  24.             weekDayHeight = self.frame.size.height / (_numberOfWeeksDisplayed + 1);  
  25.         }  
  26.           
  27.         _weekDayView.frame = CGRectMake(00, weekWidth, weekDayHeight);  
  28.         y = weekDayHeight;  
  29.     }  
  30.       
  31.     CGFloat weekHeight = (self.frame.size.height - y) / [_manager.dateHelper numberOfWeeks:self.manager.date];  
  32.       
  33.     for(UIView *weekView in _weeksViews){  
  34.         weekView.frame = CGRectMake(0, y, weekWidth, weekHeight);  
  35.         y += weekHeight;  
  36.     }  
  37. }  


继续回到viewContoller

添加下面几个方法

[objc]  view plain  copy
  1. -(void)refreshCalendar:(NSDate *)currentDate{  
  2.   
  3.     <pre name="code" class="objc">//底部视图到日历的位置(用于遮盖日历最后一行,试了一下改变高度,发现改变高度每滑动一次内存就会增加很多,变得很卡,所以用了个很笨的方法)  
float hight = 0.0; if ([self.calendarManager.dateHelper numberOfWeeks:currentDate] == 5) { hight = (Winth - 20)/7 ; if (Winth < 375) { hight = 0.8*(Winth - 20)/7; } self.contentViewTop.constant = 0 - hight;//使用autolayOut拖出来的底部视图距离顶部的日历控件的高度 }else{ self.contentViewTop.constant = 0; } }

 
再上一页和下一页加载时调用 

[objc]  view plain  copy
  1. - (void)calendarDidLoadNextPage:(JTCalendarManager *)calendar  
  2. {  
  3.     //    NSLog(@"Next page loaded");  
  4.       
  5.   
  6.   
  7.     [self refreshCalendar:[calendar date]];  
  8. }  
  9.   
  10. - (void)calendarDidLoadPreviousPage:(JTCalendarManager *)calendar  
  11. {  
  12.     //    NSLog(@"Previous page loaded");  
  13.       
  14.       
  15.     [self refreshCalendar:[calendar date]];  
  16. }  

框架中其他的一些代理方法:

- (UIView *)calendarBuildMenuItemView:(JTCalendarManager *)calendar;

自定义在 JTCalendarMenuView中设置的日期标题文字大小,背景颜色等。


- (UIView *)calendarBuildMenuItemView:(JTCalendarManager *)calendar

{

    UILabel *label = [[UILabel alloc]init];

    if (label != nil) {

        label.textAlignment = NSTextAlignmentCenter

        label.font = [UIFont fontWithName:@"Avenir-Medium" size:24];

    }

    return label;

}




/** 日期标题改变时的通知 */

- (void)calendar:(JTCalendarManager *)calendar prepareMenuItemView:(UIView *)menuItemView date:(NSDate *)date

{

    if ([menuItemView isKindOfClass:[UILabel class]])

    {

        NSString *strDate = [SWKUtility convertDateToString:date format:kDateFormatTitle];

        ((UILabel *)menuItemView).text = strDate;

    }

}



+ (NSString *)convertDateToString:(NSDate *)date format:(NSString *)format

{

    NSDateFormatter* formatter = [[NSDateFormatter alloc] init];

    formatter.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];

    [formatter setDateFormat:format];

    if ([format length] == 0)

    {

        [formatter setDateFormat:@"yyyy/MM/dd HH:mm:ss"];

    }

    else

    {

        [formatter setDateFormat:format];

    }


    NSString *strDate = [formatter stringFromDate:date];

    

    return strDate;

}




- (UIView<JTCalendarWeekDay> *)calendarBuildWeekDayView:(JTCalendarManager *)calendar;

表示出一周的方法。




- (UIView<JTCalendarWeekDay> *)calendarBuildWeekDayView:(JTCalendarManager *)calendar

{

    _calendarManager.settings.weekDayFormat = JTCalendarWeekDayFormatShort

    

    JTCalendarWeekDayView *view = [JTCalendarWeekDayView new];

    

    if (view != nil) {

        for(UILabel *label in view.dayViews){

            label.textColor = [UIColor blackColor];

            label.font = [UIFont fontWithName:@"Avenir-Light" size:20];

        }

    }

    

    return view;

}




表示出每一日的方法。

- (UIView<JTCalendarDay> *)calendarBuildDayView:(JTCalendarManager *)calendar

{

    JTCalendarDayView *view = [JTCalendarDayView new];

    

    if (view != nil) {

        view.textLabel.font = [UIFont fontWithName:@"Avenir-Light" size:25];

    }


    return view;

}


//




/** 按下显示前一个月的按钮 */

- (IBAction)onClickPrevBtn:(UIButton *)sender {

    [_calendarContentView loadPreviousPageWithAnimation]; 

    [_calendarManager reload];

}


/** 按下显示后一个月的按钮 */

- (IBAction)onClickNextBtn:(UIButton *)sender {

    [_calendarContentView loadNextPageWithAnimation]; 

    [_calendarManager reload];

}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值