国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

簡單日歷的實現

2019-11-14 18:28:30
字體:
來源:轉載
供稿:網友

1.初始化一些全局變量

1       _gregorian = [[NSCalendar alloc]initWithCalendarIdentifier:NSCalendarIdentifierGregorian];2       _calendarDate = [NSDate date];3       _dayInfoUnits = NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay|NSCalendarUnitHour|NSCalendarUnitMinute|NSCalendarUnitSecond;

2.獲取本月第一天是星期幾和本月的天數

 1    //日期組件對象 2      NSDateComponents *components = [_gregorian components:_dayInfoUnits fromDate:_calendarDate]; 3      //獲取到當月1號的當前時間 4      components.day = 1; 5      NSDate *firstDayOfMonth = [_gregorian dateFromComponents:components]; 6      [_gregorian rangeOfUnit:NSCalendarUnitMonth startDate:&firstDayOfMonth interval:NULL forDate:firstDayOfMonth]; 7      NSDateComponents *comps = [_gregorian components:NSCalendarUnitWeekday fromDate:firstDayOfMonth]; 8      //獲取當月1號的星期,星期六對應的weekDay是7 9      NSInteger weekDayBegin = comps.weekday-1;10     //獲取當月的天數11     NSInteger monthLength = [_gregorian rangeOfUnit:NSCalendarUnitDay inUnit:NSCalendarUnitMonth forDate:_calendarDate].length;

3.創建本月日歷

 1 //創建一個月的按鈕 2     CGFloat buttonX = 0; 3     CGFloat buttonY = 0; 4     for (NSInteger i = 0; i<monthLength; i++) { 5         components.day = i+1; 6         NSInteger row = (i+weekDayBegin)/7; 7         NSInteger col = (i+weekDayBegin)%7; 8         buttonX = _dayWH*col; 9         buttonY = _dayWH*row;10         CalendarButton *button = [self dayButtonWithFrame:CGRectMake(buttonX, buttonY, _dayWH, _dayWH)];11         button.title = [NSString stringWithFormat:@"%ld",components.day];12         button.tag = components.day;13         if (col==0) {14             button.titleColor = [UIColor colorWithRed:206/255.0 green:60/255.0 blue:81/255.0 alpha:1];15         }16         if (button.tag == currentDay) {17             button.titleColor = [UIColor orangeColor];18         }19         [_calendarBtnView addSubview:button];20     }

4.創建需要顯示的上個月的日歷

 1 //上個月的遺留日歷 2     NSDateComponents *PReviousMonthComponents = [_gregorian components:_dayInfoUnits fromDate:_calendarDate]; 3     previousMonthComponents.month--; 4     NSDate *previousMonthDate = [_gregorian dateFromComponents:previousMonthComponents]; 5     NSRange previousMonthDays = [_gregorian rangeOfUnit:NSCalendarUnitDay inUnit:NSCalendarUnitMonth forDate:previousMonthDate]; 6     NSInteger maxDate = previousMonthDays.length - weekDayBegin; 7     for (NSInteger i = 0; i<weekDayBegin; i++) { 8         previousMonthComponents.day = maxDate+1+i; 9         buttonX = _dayWH*i;10         buttonY = 0;11         CalendarButton *previousCalendar = [self dayButtonWithFrame:CGRectMake(buttonX, buttonY, _dayWH, _dayWH)];12         previousCalendar.title = [NSString stringWithFormat:@"%ld",previousMonthComponents.day];13         previousCalendar.enabled = NO;14         [_calendarBtnView addSubview:previousCalendar];15     }

5.創建需要現實的下個月的日歷

//最后一周有多少天    NSInteger lastWeekDay = (weekDayBegin+monthLength)%7;    //下個月開始日歷    NSDateComponents *nextMonthComponents = [_gregorian components:_dayWH fromDate:_calendarDate];    nextMonthComponents.month++;    NSInteger nextMonthDay = ShowDays-monthLength-weekDayBegin;        for (NSInteger i=lastWeekDay; i<nextMonthDay+lastWeekDay; i++) {        nextMonthComponents.day = i-lastWeekDay+1;        NSInteger row = (i+weekDayBegin+monthLength-lastWeekDay)/7;        NSInteger col = i%7;        buttonX = _dayWH*col;        buttonY = _dayWH*row;        CalendarButton *nextMonthCalendar = [self dayButtonWithFrame:CGRectMake(buttonX, buttonY, _dayWH, _dayWH)];        nextMonthCalendar.title = [NSString stringWithFormat:@"%ld",nextMonthComponents.day];        nextMonthCalendar.enabled = NO;        [_calendarBtnView addSubview:nextMonthCalendar];    }

6.切換至上個月或者下個月只需要將月份+1,-1,再重新創建日歷按鈕即可

    NSDateComponents *components = [_gregorian components:_dayInfoUnits fromDate:_calendarDate];    components.day = 1;    components.month --;    NSDate *prevMonthDate = [_gregorian dateFromComponents:components];    _calendarDate = prevMonthDate;

 

 

 

 

  


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 怀柔区| 洛川县| 上思县| 孙吴县| 绥江县| 郯城县| 沭阳县| 长海县| 防城港市| 财经| 城步| 读书| 凤冈县| 门源| 江陵县| 慈溪市| 仁寿县| 白城市| 孝感市| 宜丰县| 石屏县| 定兴县| 上杭县| 五华县| 凤山县| 大埔区| 曲周县| 新乐市| 闻喜县| 开鲁县| 腾冲县| 土默特左旗| 罗甸县| 祁门县| 杭锦旗| 常山县| 乐陵市| 佳木斯市| 岑巩县| 孟州市| 清涧县|