美文网首页iOS 开发 学习
iOS 简单日历制作

iOS 简单日历制作

作者: 清蘂翅膀的技术 | 来源:发表于2017-05-16 12:04 被阅读43次

    #import"ViewController.h"

    #import"CollectionViewCell.h"

    #define screenSize [UIScreen mainScreen].bounds.size

    @interfaceViewController()<UICollectionViewDataSource,UICollectionViewDelegate,UICollectionViewDelegateFlowLayout>

    @property(nonatomic,strong)UICollectionView*collectionView;

    @property(nonatomic,strong)NSArray*weekdayArray;

    @property(nonatomic,strong)NSDate*date;

    @property(nonatomic,strong)NSDate*todayDate;

    @property(nonatomic,assign)NSIntegermonthDay;

    @property(nonatomic,assign)NSIntegermonth;

    @property(nonatomic,assign)NSIntegeryear;

    @property(nonatomic,assign)NSIntegerfirstWeekdayInThisMonth;

    @property(nonatomic,assign)NSIntegertotaldaysInMonth;

    @end

    @implementationViewController

    - (void)viewDidLoad {

    [superviewDidLoad];

    UICollectionViewFlowLayout*flowLayout = [[UICollectionViewFlowLayoutalloc]init];

    flowLayout.itemSize=CGSizeMake(screenSize.width/7,screenSize.height/7);

    flowLayout.minimumInteritemSpacing=0;

    flowLayout.minimumLineSpacing=0;

    flowLayout.sectionInset=UIEdgeInsetsMake(0,0,0,0);

    self.collectionView= [[UICollectionViewalloc]initWithFrame:CGRectMake(0,50,screenSize.width,screenSize.height-50)collectionViewLayout:flowLayout];

    [self.collectionViewregisterNib:[UINibnibWithNibName:@"CollectionViewCell"bundle:nil]forCellWithReuseIdentifier:@"cell"];

    self.collectionView.delegate=self;

    self.collectionView.dataSource=self;

    self.collectionView.backgroundColor= [UIColorwhiteColor];

    [self.viewaddSubview:self.collectionView];

    self.weekdayArray=@[@"日",@"一",@"二",@"三",@"四",@"五",@"六"];

    self.date= [NSDatedate];

    }

    #pragma日历的方法

    - (void)setDate:(NSDate*)date {

    self.todayDate= date;

    NSDateComponents*dateComp = [[NSCalendarcurrentCalendar]components:(NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay)fromDate:date];

    NSCalendar*calendar = [NSCalendarcurrentCalendar];

    calendar.firstWeekday=1;//1.Sun. 2.Mon. 3.Thes. 4.Wed. 5.Thur. 6.Fri. 7.Sat.

    dateComp.day=1;

    NSDate*firstDayOfMonthDate = [calendardateFromComponents:dateComp];

    NSUIntegerfirstWeekday = [calendarordinalityOfUnit:NSCalendarUnitWeekdayinUnit:NSCalendarUnitWeekOfMonthforDate:firstDayOfMonthDate];

    self.firstWeekdayInThisMonth= firstWeekday -1;

    NSRangedaysInMonth = [calendarrangeOfUnit:NSCalendarUnitDayinUnit:NSCalendarUnitMonthforDate:date];

    self.totaldaysInMonth= daysInMonth.length;

    [self.collectionViewreloadData];

    }

    #pragma collectionView的方法

    - (NSInteger)numberOfSectionsInCollectionView:(UICollectionView*)collectionView {

    return2;

    }

    - (NSInteger)collectionView:(UICollectionView*)collectionView numberOfItemsInSection:(NSInteger)section {

    if(section ==0) {

    returnself.weekdayArray.count;

    }else{

    return42;

    }

    }

    - (UICollectionViewCell*)collectionView:(UICollectionView*)collectionView cellForItemAtIndexPath:(NSIndexPath*)indexPath {

    CollectionViewCell*cell = [collectionViewdequeueReusableCellWithReuseIdentifier:@"cell"forIndexPath:indexPath];

    if(indexPath.section==0) {

    cell.textLabel.text=self.weekdayArray[indexPath.row];

    }else{

    if(indexPath.row

    cell.textLabel.text=@"";

    [cellsetUserInteractionEnabled:NO];

    }elseif(indexPath.row>self.totaldaysInMonth+self.firstWeekdayInThisMonth-1) {

    cell.textLabel.text=@"";

    [cellsetUserInteractionEnabled:NO];

    }else{

    [cell.textLabelsetText:[NSStringstringWithFormat:@"%ld",(long)indexPath.row-self.firstWeekdayInThisMonth+1]];

    }

    }

    returncell;

    }

    - (IBAction)priviousBtn:(id)sender {

    NSDateComponents*dateComp = [NSDateComponentsnew];

    dateComp.month= -1;

    NSDate*newDate = [[NSCalendarcurrentCalendar]dateByAddingComponents:dateComptoDate:self.todayDateoptions:0];

    NSLog(@"%@",newDate);

    [UIViewtransitionWithView:self.viewduration:0.5options:UIViewAnimationOptionTransitionCurlUpanimations:^{

    self.date= newDate;

    }completion:nil];

    }

    - (IBAction)nextBtn:(id)sender {

    NSDateComponents*dateComp = [NSDateComponentsnew];

    dateComp.month=1;

    NSDate*newDate = [[NSCalendarcurrentCalendar]dateByAddingComponents:dateComptoDate:self.todayDateoptions:0];

    NSLog(@"%@",newDate);

    [UIViewtransitionWithView:self.viewduration:0.5options:UIViewAnimationOptionTransitionCurlDownanimations:^{

    self.date= newDate;

    }completion:nil];

    }

    - (void)didReceiveMemoryWarning {

    [superdidReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

    }

    @end

    Demo下载:https://pan.baidu.com/s/1jHXVe9C

    相关文章

      网友评论

        本文标题:iOS 简单日历制作

        本文链接:https://www.haomeiwen.com/subject/jbhlxxtx.html