项目介绍:
常见的日历
github地址
常见的日历
之前没做过日历的时候感觉很难,做过一遍之后,发现其实并不是男,只是麻烦了些。因为我为了省事,有些东西只是简单的举一个例子什么的,比较懒。大家有什么需要延伸的功能都可以在里面找下对应的东西。话不多说,看吧。
pragma mark -Private //返回当月天数
(NSUInteger)numberOfDaysInMonth:(NSDate )date{ NSCalendar greCalendar = [[NSCalendar alloc]initWithCalendarIdentifier:NSCalendarIdentifierGregorian]; [greCalendar setTimeZone:[NSTimeZone timeZoneWithName:@”GMT”]]; return [greCalendar rangeOfUnit:NSCalendarUnitDay inUnit:NSCalendarUnitMonth forDate:date].length;
}
//返回当月第一天数据
(NSDate )firstDateOfMonth:(NSDate )date{ NSCalendar greCalendar = [[NSCalendar alloc]initWithCalendarIdentifier:NSCalendarIdentifierGregorian]; [greCalendar setTimeZone:[NSTimeZone timeZoneWithName:@”GMT”]]; NSDateComponents comps = [greCalendar components:NSCalendarUnitYear | NSCalendarUnitMonth |NSCalendarUnitWeekday | NSCalendarUnitDay fromDate:date]; comps.day = 1; return [greCalendar dateFromComponents:comps]; }
(NSUInteger)startDayOfWeek:(NSDate )date { NSCalendar greCalendar = [[NSCalendar alloc]initWithCalendarIdentifier:NSCalendarIdentifierGregorian]; [greCalendar setTimeZone:[NSTimeZone timeZoneWithName:@”GMT”]];//Asia/Shanghai NSDateComponents *comps = [greCalendar components:NSCalendarUnitYear | NSCalendarUnitMonth |NSCalendarUnitWeekday | NSCalendarUnitDay fromDate:[self firstDateOfMonth:date]]; return comps.weekday; }
//上个月
(NSDate )getLastMonth:(NSDate )date{ NSCalendar greCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian]; [greCalendar setTimeZone:[NSTimeZone timeZoneWithName:@”GMT”]]; NSDateComponents comps = [greCalendar components:NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay fromDate:date]; comps.month -= 1; return [greCalendar dateFromComponents:comps]; } //下个月
(NSDate )getNextMonth:(NSDate )date{ NSCalendar greCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian]; [greCalendar setTimeZone:[NSTimeZone timeZoneWithName:@”GMT”]]; NSDateComponents comps = [greCalendar components:NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay fromDate:date]; comps.month += 1; return [greCalendar dateFromComponents:comps]; }
//目标日期
(NSDate )getCurrentMonth:(NSDate )date andYear:(NSInteger)year andMonth:(NSInteger)month andDay:(NSInteger)day{ NSCalendar greCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian]; [greCalendar setTimeZone:[NSTimeZone timeZoneWithName:@”GMT”]]; NSDateComponents comps = [greCalendar components:NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay fromDate:date]; comps.year = year; comps.month = month; comps.day = day; return [greCalendar dateFromComponents:comps]; }
//当前月
(NSDate )getCurrentMonth:(NSDate )date{ NSCalendar greCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian]; [greCalendar setTimeZone:[NSTimeZone timeZoneWithName:@”GMT”]]; NSDateComponents comps = [greCalendar components:NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay fromDate:date]; return [greCalendar dateFromComponents:comps]; }
//日期的当天
(NSDate )dateOfDay:(NSInteger)day{ NSCalendar greCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian]; [greCalendar setTimeZone:[NSTimeZone timeZoneWithName:@”GMT”]]; NSDateComponents *comps = [greCalendar components:NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay fromDate:self.chooseDate]; comps.day = day; return [greCalendar dateFromComponents:comps]; }
@end
@implementation CalendarHeaderView
(instancetype)initWithFrame:(CGRect)frame{ if (self = [super initWithFrame:frame]) {
NSArray *weekArray = [[NSArray alloc] initWithObjects:@”日”,@”一”,@”二”,@”三”,@”四”,@”五”,@”六”, nil];
for (int i=0; i<weekArray.count; i++) {
UILabel *weekLabel = [[UILabel alloc] initWithFrame:CGRectMake(i*Iphone6Scale(54), 0, Iphone6Scale(54), HeaderViewHeight)];
weekLabel.textAlignment = NSTextAlignmentCenter;
weekLabel.textColor = [UIColor grayColor];
weekLabel.font = [UIFont systemFontOfSize:13.f];
weekLabel.text = weekArray[i];
[self addSubview:weekLabel];
}
UIView *lineView = [[UIView alloc] initWithFrame:CGRectMake(0, HeaderViewHeight, self.frame.size.width, 1)];
lineView.backgroundColor = kRGBColor(0, 134, 237);
[self addSubview:lineView];
} return self; } @end
@implementation CalendarCell
(instancetype)initWithFrame:(CGRect)frame{ if (self = [super initWithFrame:frame]) { CGFloat width = self.contentView.frame.size.width0.6; CGFloat height = self.contentView.frame.size.height0.6;
// 选中BG
UIView* selectedBGView = [[UIView alloc] initWithFrame:CGRectMake( (self.contentView.width – self.contentView.height) / 2.0, 0, self.contentView.height, self.contentView.height)];
selectedBGView.tag = 9588;
selectedBGView.hidden = YES;
selectedBGView.layer.cornerRadius = selectedBGView.bounds.size.width / 2.0;
selectedBGView.backgroundColor = kRGBColor(24, 147, 239);
UILabel dayLabel = [[UILabel alloc] initWithFrame:CGRectMake( self.contentView.frame.size.width0.5-width0.5, self.contentView.frame.size.height0.5-height*0.5, width, height )];
dayLabel.textAlignment = NSTextAlignmentCenter;
dayLabel.font = [UIFont boldSystemFontOfSize:13];
dayLabel.backgroundColor = [UIColor clearColor];
[self.contentView addSubview:selectedBGView];
[self.contentView addSubview:dayLabel];
self.dayLabel = dayLabel;
} return self; }
(void)setMonthModel:(MonthModel *)monthModel{ _monthModel = monthModel; self.dayLabel.text = [NSString stringWithFormat:@”%02ld”,monthModel.dayValue];
if (monthModel.isSelectedDay) { self.dayLabel.text = @”今天”; }
if (monthModel.isCanClick) { self.dayLabel.textColor = [UIColor blackColor]; self.userInteractionEnabled = YES;
} else { self.dayLabel.textColor = [UIColor lightGrayColor]; self.userInteractionEnabled = NO; } }
@end
@implementation MonthModel
|10 [/pan]