公司項目有簽到日歷的功能,可自定義設(shè)置最小日期及最大日期慎玖。設(shè)置選中日期的背景顏色和背景圖片幸撕〉乓希可根據(jù)后臺返回的數(shù)據(jù)實現(xiàn)幾個選中的日期功能。
- (void)viewDidLoad {
[super viewDidLoad];
[self loadSignatureData];
self.navigationItem.title = @"每日簽到";
self.gregorian = [NSCalendar calendarWithIdentifier:NSCalendarIdentifierGregorian];
}
- (void)setupCalendarViewCell
{
FSCalendar *calendar = [[FSCalendar alloc] initWithFrame:CGRectMake(15, 360, KscreenWidth-30, 300)];
calendar.dataSource = self;
calendar.delegate = self;
calendar.appearance.weekdayTextColor=mainColor;
calendar.appearance.headerTitleColor=mainColor;
calendar.allowsMultipleSelection = YES;
[self.tableView addSubview:calendar];
self.calendar = calendar;
calendar.calendarHeaderView.backgroundColor = [[UIColor whiteColor] colorWithAlphaComponent:0.9];
calendar.calendarWeekdayView.backgroundColor = [[UIColor whiteColor] colorWithAlphaComponent:0.9];
calendar.appearance.selectionColor =[UIColor clearColor];//選中顏色
calendar.today = nil; // Hide the today circle
[calendar registerClass:[DIYCalendarCell class] forCellReuseIdentifier:@"cell"];
}
//定制今天的日期還有好多有趣的API可以自己去看看
- (NSString *)calendar:(FSCalendar *)calendar titleForDate:(NSDate *)date
{
if ([self.gregorian isDateInToday:date]) {
return @"今";
}
return nil;
}
- (void)dealloc
{
//? ? NSLog(@"%s",__FUNCTION__);
}
#pragma mark - FSCalendarDataSource
//設(shè)置最小日期
- (NSDate *)minimumDateForCalendar:(FSCalendar *)calendar
{
return [self.dateFormatter dateFromString:@"2017-08-01"];
}
//最大
- (NSDate *)maximumDateForCalendar:(FSCalendar *)calendar
{
return [self.gregorian dateByAddingUnit:NSCalendarUnitMonth value:0 toDate:[NSDate date] options:0];
}
//定制cell
- (FSCalendarCell *)calendar:(FSCalendar *)calendar cellForDate:(NSDate *)date atMonthPosition:(FSCalendarMonthPosition)monthPosition
{
DIYCalendarCell *cell = [calendar dequeueReusableCellWithIdentifier:@"cell" forDate:date atMonthPosition:monthPosition];
//定制圖片
//cell.circleImageView.image=[UIImage imageNamed:@"勾16"];
return cell;
}
#pragma mark - FSCalendarDelegate
- (BOOL)calendar:(FSCalendar *)calendar shouldSelectDate:(NSDate *)date atMonthPosition:(FSCalendarMonthPosition)monthPosition
{
//當(dāng)天不能點擊
if ([self.gregorian isDateInToday:date]) {
return NO;
}else{
return YES;
}
}
- (BOOL)calendar:(FSCalendar *)calendar shouldDeselectDate:(NSDate *)date atMonthPosition:(FSCalendarMonthPosition)monthPosition
{
return YES;
}
- (void)calendar:(FSCalendar *)calendar didSelectDate:(NSDate *)date atMonthPosition:(FSCalendarMonthPosition)monthPosition
{
NSLog(@"did select date %@",[self.dateFormatter stringFromDate:date]);
if ([_dataArr containsObject:[self.dateFormatter stringFromDate:date]]) {
return;
}
if (![_dataArr containsObject:[self.dateFormatter stringFromDate:date]]) {
[calendar reloadData];
}else{
//重復(fù)的不加
}
}
- (void)calendar:(FSCalendar *)calendar didDeselectDate:(NSDate *)date atMonthPosition:(FSCalendarMonthPosition)monthPosition
{
NSLog(@"did deselect date %@",[self.dateFormatter stringFromDate:date]);
}
- (nullable UIColor *)calendar:(FSCalendar *)calendar appearance:(FSCalendarAppearance *)appearance titleSelectionColorForDate:(NSDate *)date{
return [UIColor blackColor];
}
////點擊今日簽到的方法
//-(void)clickQiandao
//{
//? ? if (![_dataArr containsObject:[self.dateFormatter stringFromDate:[NSDate date]]]) {
//? ? ? ? [_dataArr addObject:[self.dateFormatter stringFromDate:[NSDate date]]];
//
//? ? ? ? for (int i=0; i<_dataArr.count; i++) {
//? ? ? ? ? ? [self.calendar selectDate:[self.dateFormatter dateFromString:_dataArr[i]] scrollToDate:YES];
//? ? ? ? }
//
//? ? ? ? [_calendar reloadData];
//? ? }
//}
- (CGFloat)calendar:(FSCalendar *)calendar appearance:(FSCalendarAppearance *)appearance borderRadiusForDate:(nonnull NSDate *)date
{
return 0.0;
}
- (UIImage *)calendar:(FSCalendar *)calendar imageForDate:(NSDate *)date
{
//點擊簽到按鈕
if ([self.gregorian isDateInToday:date]) {
UIImage * img = [UIImage imageNamed:@"勾16"];
return img;
}
else if ([_dataArr containsObject:[self.dateFormatter stringFromDate:date]]) {
return [UIImage imageNamed:@"勾16"];
//? ? ? ? ? @"對勾"
}
else{
return nil;
}
}