@property(nonatomic,strong)UICollectionView* collectionView;
@property(nonatomic,strong)NSDate*date;
@property(nonatomic,strong)NSArray*weekDayArray;
@property(nonatomic,strong)NSDate*today;
@property(nonatomic,copy)NSString* yue;
@property(nonatomic,copy)NSString* nian;
@property(nonatomic,strong)UILabel* lable;
// 用到的属性
// 给数组赋值 初始化date
_weekDayArray=@[@"日",@"一",@"二",@"三",@"四",@"五",@"六"];
self.date= [NSDatedate];
self.today=self.date;
// 创建 collectionView
CGFloatitemWidth =self.view.frame.size.width/7;
CGFloatitemHeight =self.view.frame.size.height/7;
UICollectionViewFlowLayout*layout = [[UICollectionViewFlowLayoutalloc]init];
layout.sectionInset=UIEdgeInsetsMake(0,0,0,0);
layout.itemSize=CGSizeMake(itemWidth, itemHeight);
layout.minimumLineSpacing=0;
layout.minimumInteritemSpacing=0;
self.collectionView= [[UICollectionViewalloc]initWithFrame:CGRectMake(0,self.view.frame.size.height/8,self.view.frame.size.width,self.view.frame.size.height)collectionViewLayout:layout];
self.collectionView.backgroundColor= [UIColorwhiteColor];
self.collectionView.delegate=self;
self.collectionView.dataSource=self;
self.collectionView.pagingEnabled=YES;
self.collectionView.showsHorizontalScrollIndicator=NO;
[_collectionViewregisterClass:[TstCollectionViewCellclass]forCellWithReuseIdentifier:@"cell"];
[self.viewaddSubview:self.collectionView];
// 重写dateset方法并给上方lable赋值
-(void)setDate:(NSDate*)date{
_date= date;
self.lable= [[UILabelalloc]initWithFrame:CGRectMake(0,20,200,80)];
self.lable.backgroundColor=[UIColorcyanColor];
[self.viewaddSubview:self.lable];
self.lable.text=[NSStringstringWithFormat:@"%.2ld-%li",(long)[selfmonth:date],(long)[selfyear:date]];
self.lable.textColor= [UIColorblackColor];
self.yue= [NSStringstringWithFormat:@"%ld",(long)[selfmonth:date]];
self.nian= [NSStringstringWithFormat:@"%ld",(long)[selfyear:date]];
[_collectionViewreloadData];
}
// 日历的逻辑
- (NSInteger)day:(NSDate*)date{
NSDateComponents*components = [[NSCalendarcurrentCalendar]components:(NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay)fromDate:date];
return[componentsday];
}
- (NSInteger)month:(NSDate*)date{
NSDateComponents*components = [[NSCalendarcurrentCalendar]components:(NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay)fromDate:date];
return[componentsmonth];
}
- (NSInteger)year:(NSDate*)date{
NSDateComponents*components = [[NSCalendarcurrentCalendar]components:(NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay)fromDate:date];
return[componentsyear];
}
- (NSInteger)firstWeekdayInThisMonth:(NSDate*)date{
NSCalendar*calendar = [NSCalendarcurrentCalendar];
[calendarsetFirstWeekday:1];//1.Sun. 2.Mon. 3.Thes. 4.Wed. 5.Thur. 6.Fri. 7.Sat.
NSDateComponents*comp = [calendarcomponents:(NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay)fromDate:date];
[compsetDay:1];
NSDate*firstDayOfMonthDate = [calendardateFromComponents:comp];
NSUIntegerfirstWeekday = [calendarordinalityOfUnit:NSCalendarUnitWeekdayinUnit:NSCalendarUnitWeekOfMonthforDate:firstDayOfMonthDate];
returnfirstWeekday -1;
}
- (NSInteger)totaldaysInThisMonth:(NSDate*)date{
NSRangetotaldaysInMonth = [[NSCalendarcurrentCalendar]rangeOfUnit:NSCalendarUnitDayinUnit:NSCalendarUnitMonthforDate:date];
returntotaldaysInMonth.length;
}
- (NSInteger)totaldaysInMonth:(NSDate*)date{
NSRangedaysInlastMonth = [[NSCalendarcurrentCalendar]rangeOfUnit:NSCalendarUnitDayinUnit:NSCalendarUnitMonthforDate:date];
returndaysInlastMonth.length;
}
- (NSDate*)lastMonth:(NSDate*)date{
NSDateComponents*dateComponents = [[NSDateComponentsalloc]init];
dateComponents.month= -1;
NSDate*newDate = [[NSCalendarcurrentCalendar]dateByAddingComponents:dateComponentstoDate:dateoptions:0];
returnnewDate;
}
- (NSDate*)nextMonth:(NSDate*)date{
NSDateComponents*dateComponents = [[NSDateComponentsalloc]init];
dateComponents.month= +1;
NSDate*newDate = [[NSCalendarcurrentCalendar]dateByAddingComponents:dateComponentstoDate:dateoptions:0];
returnnewDate;
}
//collectionViiew协议方法
- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView*)collectionView
{
return2;
}
- (NSInteger)collectionView:(UICollectionView*)collectionView numberOfItemsInSection:(NSInteger)section
{
if(section ==0) {
return_weekDayArray.count;
}else{
return42;
}
}
- (UICollectionViewCell*)collectionView:(UICollectionView*)collectionView cellForItemAtIndexPath:(NSIndexPath*)indexPath
{
TstCollectionViewCell*cell = [collectionViewdequeueReusableCellWithReuseIdentifier:@"cell"forIndexPath:indexPath];
if(indexPath.section==0) {
[cell.dateLabelsetText:_weekDayArray[indexPath.row]];
cell.dateLabel.textColor= [UIColorredColor];
}else{
//
NSIntegerdaysInThisMonth = [selftotaldaysInMonth:_date];
NSIntegerfirstWeekday = [selffirstWeekdayInThisMonth:_date];
NSIntegerday =0;
NSIntegeri = indexPath.row;
//
if(i < firstWeekday) {
[cell.dateLabelsetText:@""];
}elseif(i > firstWeekday + daysInThisMonth -1){
[cell.dateLabelsetText:@""];
}else{
day = i - firstWeekday +1;
cell.dateLabel.text= [NSStringstringWithFormat:@"%ld",(long)day];
cell.dateLabel.textColor=[UIColorblackColor];
}
if([_todayisEqualToDate:_date]) {
if(day == [selfday:_date]) {
cell.dateLabel.textColor= [UIColorredColor];
}elseif(day > [selfday:_date]) {
cell.dateLabel.textColor= [UIColorgrayColor];
}
}elseif([_todaycompare:_date] ==NSOrderedAscending) {
cell.dateLabel.textColor= [UIColorgrayColor];
}
}
}
returncell;
}
// 点击方法
- (BOOL)collectionView:(UICollectionView*)collectionView shouldSelectItemAtIndexPath:(NSIndexPath*)indexPath
{
if(indexPath.section==1) {
NSIntegerdaysInThisMonth = [selftotaldaysInMonth:_date];
NSIntegerfirstWeekday = [selffirstWeekdayInThisMonth:_date];
NSIntegerday =0;
NSIntegeri = indexPath.row;
if(i >= firstWeekday && i <= firstWeekday + daysInThisMonth -1) {
day = i - firstWeekday +1;
//this month
if([_todayisEqualToDate:_date]) {
if(day <= [selfday:_date]) {
returnYES;
}
}elseif([_todaycompare:_date] ==NSOrderedDescending) {
returnYES;
}
}
}
returnYES;
}
// 手势方法上个月 下个月
- (void)addSwipe
{
UISwipeGestureRecognizer*swipLeft = [[UISwipeGestureRecognizeralloc]initWithTarget:selfaction:@selector(nexAction:)];
swipLeft.direction=UISwipeGestureRecognizerDirectionLeft;
[self.viewaddGestureRecognizer:swipLeft];
UISwipeGestureRecognizer*swipRight = [[UISwipeGestureRecognizeralloc]initWithTarget:selfaction:@selector(previouseAction:)];
swipRight.direction=UISwipeGestureRecognizerDirectionRight;
[self.viewaddGestureRecognizer:swipRight];
}
- (void)addTap
{
UITapGestureRecognizer*tap = [[UITapGestureRecognizeralloc]initWithTarget:selfaction:@selector(hide)];
[self.viewaddGestureRecognizer:tap];
}
- (IBAction)previouseAction:(UIButton*)sender
{
[UIViewtransitionWithView:self.viewduration:0.5options:UIViewAnimationOptionTransitionCurlDownanimations:^(void) {
self.date= [selflastMonth:self.date];
}completion:nil];
}
- (IBAction)nexAction:(UIButton*)sender
{
[UIViewtransitionWithView:self.viewduration:0.5options:UIViewAnimationOptionTransitionCurlUpanimations:^(void) {
self.date= [selfnextMonth:self.date];
}completion:nil];
}