2023-01-12ClassScheduleDateView

日歷選擇的view

#import

@protocol ClassScheduleDateViewDelegate <NSObject>

- (void)courseList:(NSString*)startTimeandEndTime:(NSString*)endTime ;

- (void)courseListScrollTo:(NSString *)date;

@end

@interface ClassScheduleDateView : UIView

- (void)setData:(NSArray*)array;

@property (nonatomic, weak) id<ClassScheduleDateViewDelegate>delegate;

@end



#import "ClassScheduleDateView.h"

#import "ClassScheduleCollectionCell.h"

#import "SchoolApiClient.h"

#define titleHeight45

#define weekHeight30

@interface ClassScheduleDateView()<UICollectionViewDelegate,UICollectionViewDataSource,UICollectionViewDataSource, UICollectionViewDelegateFlowLayout,UIScrollViewDelegate>

@property (strong, nonatomic) UICollectionView *collectionView;

@property (strong, nonatomic) NSMutableArray *lastlastMonthObjects;

@property (strong, nonatomic) NSMutableArray *lastMonthObjects;

@property (strong, nonatomic) NSMutableArray *currentMonthObjects;

@property (strong, nonatomic) NSMutableArray *nextMonthObjects;

@property (strong, nonatomic) NSMutableArray *nextnextMonthObjects;

@property (strong, nonatomic) NSMutableArray *showDateObjects;

@property (strong, nonatomic) NSMutableArray *showLastDateObjects;

@property (strong, nonatomic) NSMutableArray *showNextDateObjects;

@property (strong, nonatomic) NSArray *weakObjects;

@property (strong, nonatomic) UIView *headView;

@property (strong, nonatomic) UILabel *dateLabel;

@property (strong, nonatomic) UIButton *lastButton;//上個月

@property (strong, nonatomic) UIButton *nextButton;//下個月

@property (strong, nonatomic) UIButton *hideButton;//隱藏日歷

@property (strong, nonatomic) NSString *currentDateStr;

@property (strong, nonatomic) NSString *lastDateStr;

@property (strong, nonatomic) NSString *nextDateStr;

@property (strong, nonatomic) NSString *startDateStr;//開始日期

@property (strong, nonatomic) NSString *endDateStr;//結(jié)束日期

@property (strong, nonatomic) UIScrollView *bgScrollView;

@property (strong, nonatomic) UICollectionView *lastCollectionView;

@property (strong, nonatomic) UICollectionView *nextCollectionView;

@property (strong, nonatomic) NSMutableArray *courseList;

//請求數(shù)據(jù)的有課的日子

@property (strong, nonatomic) NSMutableArray *lastList;

@property (strong, nonatomic) NSMutableArray *currentList;

@property (strong, nonatomic) NSMutableArray *nextList;

@property (assign, nonatomic) NSInteger selectIndex;

@end

@implementation ClassScheduleDateView

- (instancetype)initWithFrame:(CGRect)frame {

? ? self= [superinitWithFrame:frame];

? ? if(self) {

? ? ? ? self.backgroundColor = [UIColor whiteColor];

? ? ? ? self.lastMonthObjects = [[NSMutableArray alloc]init];

? ? ? ? self.currentMonthObjects = [[NSMutableArray alloc]init];

? ? ? ? self.nextMonthObjects = [[NSMutableArray alloc]init];

? ? ? ? self.showDateObjects = [[NSMutableArray alloc]init];

? ? ? ? self.lastlastMonthObjects = [[NSMutableArray alloc]init];

? ? ? ? self.nextnextMonthObjects = [[NSMutableArray alloc]init];

? ? ? ? self.showLastDateObjects = [[NSMutableArray alloc]init];

? ? ? ? self.showNextDateObjects = [[NSMutableArray alloc]init];

? ? ? ? self.lastList = [[NSMutableArray alloc]init];

? ? ? ? self.currentList = [[NSMutableArray alloc]init];

? ? ? ? self.nextList = [[NSMutableArray alloc]init];

? ? ? ? self.courseList = [[NSMutableArray alloc]init];

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

? ? ? ? self.currentDateStr = @"";

? ? ? ? self.lastDateStr=@"";

? ? ? ? self.nextDateStr=@"";

? ? ? ? self.startDateStr=@"";

? ? ? ? self.endDateStr=@"";

? ? ? ? self.selectIndex=1000;

? ? ? ? [selfinitHeadView];

? ? ? ? self.bgScrollView = [[UIScrollView alloc]initWithFrame:CGRectMake(0, titleHeight+weekHeight, SCREEN_WIDTH, self.height-titleHeight-weekHeight)];

? ? ? ? self.bgScrollView.contentSize = CGSizeMake(SCREEN_WIDTH*3, self.height-titleHeight-weekHeight);

? ? ? ? self.bgScrollView.pagingEnabled=YES;

? ? ? ? self.bgScrollView.delegate=self;

? ? ? ? self.bgScrollView.showsHorizontalScrollIndicator = NO;

? ? ? ? self.bgScrollView.showsVerticalScrollIndicator = NO;

? ? ? ? self.bgScrollView.contentOffset = CGPointMake(SCREEN_WIDTH, 0);

? ? ? ? [selfaddSubview:self.bgScrollView];

? ? ? ? [self.bgScrollView addSubview:self.collectionView];

? ? ? ? [self.bgScrollView addSubview:self.lastCollectionView];

? ? ? ? [self.bgScrollView addSubview:self.nextCollectionView];


? ? ? ? NSDateFormatter *formatter=[[NSDateFormatter alloc] init];

? ? ? ? [formattersetDateFormat:@"yyyy-MM"];

? ? ? ? NSDate*currentDate=[NSDatenew];

? ? ? ? //上個月

? ? ? ? NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];

? ? ? ? NSDateComponents *lastMonthComps = [[NSDateComponents alloc] init];

? ? ? ? NSDate*lastdate = [calendardateByAddingComponents:lastMonthCompstoDate:currentDateoptions:0];

? ? ? ? NSString*lastDateStr = [formatterstringFromDate:lastdate];


? ? ? ? [selfgetAllDaysWithMonth:lastDateStr];

? ? }

? ? return self;

}

- (void)initHeadView{

? ? self.headView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, titleHeight + weekHeight)];

? ? self.headView.backgroundColor = [UIColor whiteColor];

? ? [selfaddSubview:self.headView];


? ? self.dateLabel = [[UILabel alloc]initWithFrame:CGRectMake(10, 0, 200, titleHeight)];

? ? self.dateLabel.text=@"";

? ? [self.headView addSubview:self.dateLabel];


? ? for(inti =0; i

? ? ? ? UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(self.width/7.0*i, titleHeight, self.width/7.0, weekHeight)];

? ? ? ? label.text=self.weakObjects[i];

? ? ? ? label.textColor=RGB(200,200,200);

? ? ? ? label.textAlignment = NSTextAlignmentCenter;

? ? ? ? label.font = [UIFont systemFontOfSize:11];

? ? ? ? [self.headViewaddSubview:label];

? ? }


? ? self.lastButton = [[UIButton alloc]initWithFrame:CGRectMake(SCREEN_WIDTH-titleHeight*2-10, 0, titleHeight, titleHeight)];

? ? [self.lastButton setImage:[UIImage imageNamed:@"classScheduleLeft"] forState:UIControlStateNormal];

? ? [self.lastButton addTarget:self action:@selector(lastClick) forControlEvents:UIControlEventTouchUpInside];

? ? [self.headView addSubview:self.lastButton];


? ? self.hideButton = [[UIButton alloc]initWithFrame:CGRectMake(SCREEN_WIDTH-titleHeight*2-10, 0, titleHeight, titleHeight)];

? ? [self.hideButton setImage:[UIImage imageNamed:@"classScheduleLeft"] forState:UIControlStateNormal];

? ? [self.hideButton addTarget:self action:@selector(lastClick) forControlEvents:UIControlEventTouchUpInside];

? ? [self.headView addSubview:self.hideButton];


? ? self.nextButton = [[UIButton alloc]initWithFrame:CGRectMake(SCREEN_WIDTH-titleHeight-10, 0, titleHeight, titleHeight)];

? ? [self.nextButton setImage:[UIImage imageNamed:@"classScheduleRight"] forState:UIControlStateNormal];

? ? [self.nextButton addTarget:self action:@selector(nextClick) forControlEvents:UIControlEventTouchUpInside];

? ? [self.headView addSubview:self.nextButton];

}

- (void)lastClick{

? ? NSLog(@"lastClick");

? ? self.currentDateStr = self.lastDateStr;

? ? self.dateLabel.text = [NSString stringWithFormat:@"%@月",[self.currentDateStr stringByReplacingOccurrencesOfString:@"-" withString:@"年"]];

? ? [self getAllDaysWithMonth:self.currentDateStr];

}

- (void)nextClick{

? ? NSLog(@"nextClick");

? ? self.currentDateStr = self.nextDateStr;

? ? self.dateLabel.text = [NSString stringWithFormat:@"%@月",[self.currentDateStr stringByReplacingOccurrencesOfString:@"-" withString:@"年"]];

? ? [self getAllDaysWithMonth:self.currentDateStr];

}

//獲取當前月的總天數(shù)填充數(shù)組

- (void)getAllDaysWithMonth:(NSString *)dateStr//2021-12

{

? ? [self.lastMonthObjects removeAllObjects];

? ? [self.nextMonthObjects removeAllObjects];

? ? [self.showDateObjects removeAllObjects];

? ? [self.currentMonthObjects removeAllObjects];

? ? [self.showNextDateObjects removeAllObjects];

? ? [self.showLastDateObjects removeAllObjects];


? ? NSDateFormatter *formatter=[[NSDateFormatter alloc] init];

? ? [formattersetDateFormat:@"yyyy-MM"];

? ? NSDate*currentDate=[formatterdateFromString:dateStr];

? ? //上上個月

? ? NSCalendar *llcalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];

? ? NSDateComponents *lllastMonthComps = [[NSDateComponents alloc] init];

? ? [lllastMonthCompssetMonth:-2];

? ? NSDate*lllastdate = [llcalendardateByAddingComponents:lllastMonthCompstoDate:currentDateoptions:0];

? ? NSString*lllastDateStr = [formatterstringFromDate:lllastdate];

? ? NSUIntegerlllastDayCount = [selfgetInMonthNumberOfDays:lllastDateStr];//一個月的總天數(shù)

? ? [formattersetDateFormat:@"yyyy-MM-dd"];

? ? for(NSIntegeri =1; i <= lllastDayCount; i++) {

? ? ? ? NSString * sr = [NSString stringWithFormat:@"%ld",i];

? ? ? ? [self.lastlastMonthObjects addObject:sr];

? ? }


? ? //上個月

? ? [formattersetDateFormat:@"yyyy-MM"];

? ? NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];

? ? NSDateComponents *lastMonthComps = [[NSDateComponents alloc] init];

? ? [lastMonthCompssetMonth:-1];

? ? NSDate*lastdate = [calendardateByAddingComponents:lastMonthCompstoDate:currentDateoptions:0];

? ? NSString*lastDateStr = [formatterstringFromDate:lastdate];

? ? NSUIntegerlastDayCount = [selfgetInMonthNumberOfDays:lastDateStr];//一個月的總天數(shù)

? ? [formattersetDateFormat:@"yyyy-MM-dd"];

? ? for(NSIntegeri =1; i <= lastDayCount; i++) {

? ? ? ? NSString * sr = [NSString stringWithFormat:@"%ld",i];

? ? ? ? [self.lastMonthObjectsaddObject:sr];

? ? }

? ? self.lastDateStr= lastDateStr;


? ? //下個月

? ? [formattersetDateFormat:@"yyyy-MM"];

? ? NSCalendar *nextCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];

? ? NSDateComponents *nextMonthComps = [[NSDateComponents alloc] init];

? ? [nextMonthCompssetMonth:1];

? ? NSDate*nextDate = [nextCalendardateByAddingComponents:nextMonthCompstoDate:currentDateoptions:0];

? ? NSString*nextDateStr = [formatterstringFromDate:nextDate];

? ? NSUIntegernextDayCount = [selfgetInMonthNumberOfDays:nextDateStr];//一個月的總天數(shù)

? ? [formattersetDateFormat:@"yyyy-MM-dd"];

? ? for(NSIntegeri =1; i <= nextDayCount; i++) {

? ? ? ? NSString * sr = [NSString stringWithFormat:@"%ld",i];

? ? ? ? [self.nextMonthObjectsaddObject:sr];

? ? }

? ? self.nextDateStr= nextDateStr;


? ? //下下個月

? ? [formattersetDateFormat:@"yyyy-MM"];

? ? NSCalendar *nnnextCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];

? ? NSDateComponents *nnnextMonthComps = [[NSDateComponents alloc] init];

? ? [nnnextMonthCompssetMonth:2];

? ? NSDate*nnnextDate = [nnnextCalendardateByAddingComponents:nnnextMonthCompstoDate:currentDateoptions:0];

? ? NSString*nnnextDateStr = [formatterstringFromDate:nnnextDate];

? ? NSUIntegernnnextDayCount = [selfgetInMonthNumberOfDays:nnnextDateStr];//一個月的總天數(shù)

? ? [formattersetDateFormat:@"yyyy-MM-dd"];

? ? for(NSIntegeri =1; i <= nnnextDayCount; i++) {

? ? ? ? NSString * sr = [NSString stringWithFormat:@"%ld",i];

? ? ? ? [self.nextnextMonthObjects addObject:sr];

? ? }

? ? //當前月

? ? [formattersetDateFormat:@"yyyy-MM"];

? ? NSUIntegerdayCount = [selfgetInMonthNumberOfDays:dateStr];//一個月的總天數(shù)

? ? NSString* str = [formatterstringFromDate:currentDate];//年月

? ? [formattersetDateFormat:@"yyyy-MM-dd"];

? ? for(NSIntegeri =1; i <= dayCount; i++) {

//? ? ? ? NSString * sr = [NSString stringWithFormat:@"%@-%ld",str,i];

//? ? ? ? [self.showDateObjects addObject:sr];

? ? ? ? NSString * sr = [NSString stringWithFormat:@"%ld",i];

? ? ? ? [self.currentMonthObjects addObject:sr];

? ? }

? ? self.currentDateStr= dateStr;

? ? if ([self.dateLabel.text isEqualToString:@""]) {

? ? ? ? self.dateLabel.text = [NSString stringWithFormat:@"%@月",[self.currentDateStr stringByReplacingOccurrencesOfString:@"-" withString:@"年"]];

? ? }


? ? //配置下個月顯示的數(shù)據(jù)

? ? [formattersetDateFormat:@"yyyy-MM-dd"];

? ? NSDate*nextFirstDay=[formatterdateFromString:[NSStringstringWithFormat:@"%@-01",nextDateStr]];

? ? NSDate*nextLastDay=[formatterdateFromString:[NSStringstringWithFormat:@"%@-%lu",nextDateStr,(unsignedlong)nextDayCount]];

? ? NSIntegernfirstDay = [selfdateisweek:nextFirstDay];

? ? NSIntegernlastDay = [selfdateisweek:nextLastDay];

? ? for(inti = (int)nfirstDay; i>0; i--) {

? ? ? ? [self.showNextDateObjects addObject:self.currentMonthObjects[self.currentMonthObjects.count - i]];

? ? }

? ? for(inti =0; i

? ? ? ? [self.showNextDateObjects addObject:self.nextMonthObjects[i]];

? ? }

? ? for(inti =0; i<6-nlastDay; i++) {

? ? ? ? [self.showNextDateObjects addObject:self.nextnextMonthObjects[i]];

? ? }


? ? //配置上個月顯示的數(shù)據(jù)

? ? [formattersetDateFormat:@"yyyy-MM-dd"];

? ? NSDate*lastFirstDay=[formatterdateFromString:[NSStringstringWithFormat:@"%@-01",lastDateStr]];

? ? NSDate*lastLastDay=[formatterdateFromString:[NSStringstringWithFormat:@"%@-%lu",lastDateStr,(unsignedlong)lastDayCount]];

? ? NSIntegerlfirstDay = [selfdateisweek:lastFirstDay];

? ? NSIntegerllastDay = [selfdateisweek:lastLastDay];

? ? for(inti = (int)lfirstDay; i>0; i--) {

? ? ? ? [self.showLastDateObjects addObject:self.lastlastMonthObjects[self.lastlastMonthObjects.count - i]];

? ? }

? ? for(inti =0; i

? ? ? ? [self.showLastDateObjects addObject:self.lastMonthObjects[i]];

? ? }

? ? for(inti =0; i<6-llastDay; i++) {

? ? ? ? [self.showLastDateObjects addObject:self.currentMonthObjects[i]];

? ? }


? ? //配置當前月顯示的數(shù)據(jù)

? ? [formattersetDateFormat:@"yyyy-MM-dd"];

? ? NSDate*currentFirstDay=[formatterdateFromString:[NSStringstringWithFormat:@"%@-01",dateStr]];

? ? NSDate*currentLastDay=[formatterdateFromString:[NSStringstringWithFormat:@"%@-%lu",dateStr,(unsignedlong)dayCount]];

? ? NSIntegerfirstDay = [selfdateisweek:currentFirstDay];

? ? NSIntegerlastDay = [selfdateisweek:currentLastDay];

? ? self.startDateStr = @"";

? ? self.endDateStr = @"";

? ? for(inti = (int)firstDay; i>0; i--) {

? ? ? ? [self.showDateObjects addObject:self.lastMonthObjects[self.lastMonthObjects.count - i]];

? ? ? ? if(i == firstDay) {

? ? ? ? ? ? self.startDateStr= [NSStringstringWithFormat:@"%@-%@",lastDateStr,self.showDateObjects.firstObject];

? ? ? ? }

? ? }

? ? for(inti =0; i

? ? ? ? [self.showDateObjects addObject:self.currentMonthObjects[i]];

? ? ? ? if([self.startDateStrisEqualToString:@""]) {

? ? ? ? ? ? self.startDateStr= [NSStringstringWithFormat:@"%@-01",dateStr];

? ? ? ? }

? ? ? ? if(i ==self.currentMonthObjects.count-1) {

? ? ? ? ? ? self.endDateStr= [NSStringstringWithFormat:@"%@-%lu",dateStr,(unsignedlong)dayCount];

? ? ? ? }

? ? }

? ? for(inti =0; i<6-lastDay; i++) {

? ? ? ? [self.showDateObjects addObject:self.nextMonthObjects[i]];

? ? ? ? if(i ==6-lastDay-1) {

? ? ? ? ? ? self.endDateStr= [NSStringstringWithFormat:@"%@-%lu",nextDateStr,(unsignedlong)i+1];

? ? ? ? }

? ? }

? ? [self.lastCollectionView reloadData];

? ? [self.nextCollectionView reloadData];

? ? [self.collectionView reloadData];

? ? self.bgScrollView.contentOffset = CGPointMake(SCREEN_WIDTH, 0);


? ? if(self.delegate&& [self.delegaterespondsToSelector:@selector(courseList:andEndTime:)]) {

? ? ? ? [self.delegate courseList:self.startDateStr andEndTime:self.endDateStr];

? ? }

}

-(NSInteger)getInMonthNumberOfDays:(NSString *)dateStr

{

? ? NSCalendar * calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];

? ? NSDateFormatter *formatter=[[NSDateFormatter alloc] init];

? ? [formattersetDateFormat:@"yyyy-MM"];

? ? NSDate*currentDate=[formatterdateFromString:dateStr];

? ? NSRange range = [calendar rangeOfUnit:NSCalendarUnitDay inUnit: NSCalendarUnitMonth forDate:currentDate];

? ? returnrange.length;

}

- (void)setupRequestMonth

{

? ? NSDate*currentDate = [NSDatedate];

? ? NSDateFormatter *formatter = [[NSDateFormatter alloc] init];

? ? [formattersetDateFormat:@"yyyy-MM"];


? ? NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];

? ? NSDateComponents *lastMonthComps = [[NSDateComponents alloc] init];

//? ? [lastMonthComps setYear:1]; // year = 1表示1年后的時間 year = -1為1年前的日期,month day 類推

? ? [lastMonthCompssetMonth:-1];

? ? NSDate*newdate = [calendardateByAddingComponents:lastMonthCompstoDate:currentDateoptions:0];

? ? NSString*dateStr = [formatterstringFromDate:newdate];

? ? NSLog(@"date str = %@", dateStr);

}

- (NSInteger)dateisweek:(NSDate*)date {

? ? NSCalendar * calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];

? ? NSDateComponents *comps = [calendar components:kCFCalendarUnitWeekOfMonth|NSCalendarUnitWeekday fromDate:date];

? ? NSIntegernum;

? ? switch(comps.weekday) {

? ? ? ? case1:

? ? ? ? ? ? num =0;//周日

? ? ? ? ? ? break;

? ? ? ? case2:

? ? ? ? ? ? num =1;

? ? ? ? ? ? break;

? ? ? ? case3:

? ? ? ? ? ? num =2;

? ? ? ? ? ? break;

? ? ? ? case4:

? ? ? ? ? ? num =3;

? ? ? ? ? ? break;

? ? ? ? case5:

? ? ? ? ? ? num =4;

? ? ? ? ? ? break;

? ? ? ? case6:

? ? ? ? ? ? num =5;

? ? ? ? ? ? break;

? ? ? ? case7:

? ? ? ? ? ? num =6;//周六

? ? ? ? ? ? break;


? ? ? ? default:

? ? ? ? ? ? break;

? ? }

? ? returnnum;

}

- (UICollectionView *)collectionView{

? ? if (!_collectionView) {

? ? ? ? UICollectionViewFlowLayout *flowLayout = [[UICollectionViewFlowLayout alloc] init];

? ? ? ? [flowLayoutsetScrollDirection:UICollectionViewScrollDirectionVertical];

? ? ? ? _collectionView = [[UICollectionView alloc]initWithFrame:CGRectMake(SCREEN_WIDTH, 0, SCREEN_WIDTH, self.height-titleHeight-weekHeight-10) collectionViewLayout:flowLayout];

? ? ? ? _collectionView.delegate = self;

? ? ? ? _collectionView.dataSource = self;

? ? ? ? _collectionView.backgroundColor = [UIColor whiteColor];

? ? ? ? //? ? ? ? 添加headview 實際上是 使用了uicollectionview的 SectionHeader來實現(xiàn)類似于? tableview 的 tableheaderview效果

//? ? ? ? [_collectionView registerNib:[UINib nibWithNibName:@"PositionReusableView" bundle:nil] forSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"PositionReusableView"];

? ? ? ? [_collectionView registerNib:[UINib nibWithNibName:@"ClassScheduleCollectionCell" bundle:nil] forCellWithReuseIdentifier:NSStringFromClass([ClassScheduleCollectionCell class])];

? ? ? ? [selfaddSubview:self.collectionView];

? ? }

? ? return _collectionView;

}

- (UICollectionView *)lastCollectionView{

? ? if (!_lastCollectionView) {

? ? ? ? UICollectionViewFlowLayout *flowLayout = [[UICollectionViewFlowLayout alloc] init];

? ? ? ? [flowLayoutsetScrollDirection:UICollectionViewScrollDirectionVertical];

? ? ? ? _lastCollectionView = [[UICollectionView alloc]initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, self.height-titleHeight-weekHeight-10) collectionViewLayout:flowLayout];

? ? ? ? _lastCollectionView.delegate = self;

? ? ? ? _lastCollectionView.dataSource = self;

? ? ? ? _lastCollectionView.backgroundColor = [UIColor whiteColor];

? ? ? ? //? ? ? ? 添加headview 實際上是 使用了uicollectionview的 SectionHeader來實現(xiàn)類似于? tableview 的 tableheaderview效果

//? ? ? ? [_collectionView registerNib:[UINib nibWithNibName:@"PositionReusableView" bundle:nil] forSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"PositionReusableView"];

? ? ? ? [_lastCollectionView registerNib:[UINib nibWithNibName:@"ClassScheduleCollectionCell" bundle:nil] forCellWithReuseIdentifier:NSStringFromClass([ClassScheduleCollectionCell class])];

? ? ? ? [self addSubview:_lastCollectionView];

? ? }

? ? return _lastCollectionView;

}

- (UICollectionView *)nextCollectionView{

? ? if (!_nextCollectionView) {

? ? ? ? UICollectionViewFlowLayout *flowLayout = [[UICollectionViewFlowLayout alloc] init];

? ? ? ? [flowLayoutsetScrollDirection:UICollectionViewScrollDirectionVertical];

? ? ? ? _nextCollectionView = [[UICollectionView alloc]initWithFrame:CGRectMake(SCREEN_WIDTH*2, 0, SCREEN_WIDTH, self.height-titleHeight-weekHeight-10) collectionViewLayout:flowLayout];

? ? ? ? _nextCollectionView.delegate = self;

? ? ? ? _nextCollectionView.dataSource = self;

? ? ? ? _nextCollectionView.backgroundColor = [UIColor whiteColor];

? ? ? ? //? ? ? ? 添加headview 實際上是 使用了uicollectionview的 SectionHeader來實現(xiàn)類似于? tableview 的 tableheaderview效果

//? ? ? ? [_collectionView registerNib:[UINib nibWithNibName:@"PositionReusableView" bundle:nil] forSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"PositionReusableView"];

? ? ? ? [_nextCollectionView registerNib:[UINib nibWithNibName:@"ClassScheduleCollectionCell" bundle:nil] forCellWithReuseIdentifier:NSStringFromClass([ClassScheduleCollectionCell class])];

? ? ? ? [self addSubview:_nextCollectionView];

? ? }

? ? return _nextCollectionView;

}

//#pragma mark - 代理方法 Delegate Methods

//- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout referenceSizeForHeaderInSection:(NSInteger)section{

//? ? return CGSizeMake(SCREEN_WIDTH, 50);

//}

////然后實現(xiàn)以下的協(xié)議

//-(UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath

//{

//? ? UICollectionReusableView *reusableview = nil;

//? ? NSLog(@"kind = %@", kind);

//? ? if (kind == UICollectionElementKindSectionHeader){

//

//? ? ? ? PositionReusableView *headerV = (PositionReusableView *)[collectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"PositionReusableView" forIndexPath:indexPath];

//? ? ? ? headerV.titleLabel.text = self.objects[indexPath.section][@"cate"][@"name"];

//? ? ? ? reusableview = headerV;

//? ? ? ? NSString *cateCode = self.objects[indexPath.section][@"cate"][@"code"];

//? ? ? ? NSString *logoStr = [self getLogoNameStr:cateCode];

//? ? ? ? headerV.logoImageView.image = [UIImage imageNamed:logoStr];

//? ? ? ? if (indexPath.section == 0) {

//? ? ? ? ? ? headerV.lineView.hidden = YES;

//? ? ? ? }

//? ? }

//? ? return reusableview;

//}

//- (NSString *)getLogoNameStr:(NSString *)code{

//? ? if ([code isEqualToString:@"1"]) {

//? ? ? ? return @"position_logo_gwy";

//? ? }

//? ? else if ([code isEqualToString:@"2"]) {

//? ? ? ? return @"position_logo_tang";

//? ? }

//? ? else if ([code isEqualToString:@"3"]) {

//? ? ? ? return @"position_logo_xz";

//? ? }

//? ? else if ([code isEqualToString:@"4"]) {

//? ? ? ? return @"position_logo_jiguan";

//? ? }

//? ? return @"position_logo_jiguan";

//}

// 設(shè)置分區(qū)

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

? ? return1;

//? ? return self.currentMonthObjects.count;

}

// 每個分區(qū)上得元素個數(shù)

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

? ? if(collectionView ==self.collectionView) {

? ? ? ? return self.showDateObjects.count;

? ? }

? ? elseif(collectionView ==self.nextCollectionView){

? ? ? ? return? self.showNextDateObjects.count;

? ? }

? ? elseif(collectionView ==self.lastCollectionView){

? ? ? ? return? self.showLastDateObjects.count;

? ? }

? ? return0;

}

// 設(shè)置cell

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

? ? ClassScheduleCollectionCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([ClassScheduleCollectionCell class]) forIndexPath:indexPath];

? ? NSString*day =@"";

? ? if(collectionView ==self.collectionView) {

? ? ? ? day =self.showDateObjects[indexPath.row];

? ? ? ? cell.bgView.backgroundColor = [UIColor whiteColor];

? ? }

? ? elseif(collectionView ==self.nextCollectionView){

? ? ? ? day =self.showNextDateObjects[indexPath.row];

? ? }

? ? elseif(collectionView ==self.lastCollectionView){

? ? ? ? day =self.showLastDateObjects[indexPath.row];

? ? }

? ? cell.dateLabel.text= day;

? ? if(indexPath.row<10&& day.intValue>20) {

? ? ? ? cell.dateLabel.textColor=RGB(200,200,200);

? ? ? ? cell.dateLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightBold];

? ? ? ? if([self.lastListcontainsObject:day]) {

? ? ? ? ? ? cell.radioView.hidden=NO;

? ? ? ? }

? ? ? ? else{

? ? ? ? ? ? cell.radioView.hidden=YES;

? ? ? ? }

? ? }

? ? elseif(indexPath.row>20&& day.intValue<10) {

? ? ? ? cell.dateLabel.textColor=RGB(200,200,200);

? ? ? ? cell.dateLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightBold];

? ? ? ? if([self.nextListcontainsObject:day]) {

? ? ? ? ? ? cell.radioView.hidden=NO;

? ? ? ? }

? ? ? ? else{

? ? ? ? ? ? cell.radioView.hidden=YES;

? ? ? ? }

? ? }

? ? else{

? ? ? ? cell.dateLabel.textColor=UIColorFromRGB(0x000000);

? ? ? ? cell.dateLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightBold];

? ? ? ? if([self.currentListcontainsObject:day]) {

? ? ? ? ? ? cell.radioView.hidden=NO;

? ? ? ? }

? ? ? ? else{

? ? ? ? ? ? cell.radioView.hidden=YES;

? ? ? ? }

? ? }

? ? if(collectionView ==self.collectionView) {

? ? ? ? if(self.selectIndex== indexPath.row) {

? ? ? ? ? ? cell.bgView.backgroundColor=UIColorFromRGB(UI_COLOR_Exam_BLUE_2987FC);

? ? ? ? ? ? cell.dateLabel.textColor = [UIColor whiteColor];

? ? ? ? }

? ? }

? ? returncell;

}

// 設(shè)置cell大小 itemSize:可以給每一個cell指定不同的尺寸

- (CGSize)collectionView:(UICollectionView*)collectionViewlayout:(UICollectionViewLayout*)collectionViewLayoutsizeForItemAtIndexPath:(NSIndexPath*)indexPath {

? ? intnum = (int)self.showDateObjects.count/7;

? ? CGFloatheight = (self.height-titleHeight-weekHeight-10)/num;

? ? CGFloatwidth =SCREEN_WIDTH/7.0;

? ? returnCGSizeMake(width, height);

}

// 設(shè)置UIcollectionView整體的內(nèi)邊距(這樣item不貼邊顯示)

- (UIEdgeInsets)collectionView:(UICollectionView*)collectionViewlayout:(UICollectionViewLayout*)collectionViewLayoutinsetForSectionAtIndex:(NSInteger)section {

? ? // 上 左 下 右

? ? return UIEdgeInsetsMake(0, 0, 0, 0);

}

// 設(shè)置minimumLineSpacing:cell上下之間最小的距離

- (CGFloat)collectionView:(UICollectionView*)collectionViewlayout:(UICollectionViewLayout*)collectionViewLayoutminimumLineSpacingForSectionAtIndex:(NSInteger)section {

? ? return0;

}

// 設(shè)置minimumInteritemSpacing:cell左右之間最小的距離

- (CGFloat)collectionView:(UICollectionView*)collectionViewlayout:(UICollectionViewLayout*)collectionViewLayoutminimumInteritemSpacingForSectionAtIndex:(NSInteger)section {

? ? return0;

}

// 選中cell的回調(diào)

- (void)collectionView:(UICollectionView*)collectionViewdidSelectItemAtIndexPath:(NSIndexPath*)indexPath {

? ? self.selectIndex= indexPath.row;

? ? [self.collectionView reloadData];

? ? if(self.delegate&& [self.delegaterespondsToSelector:@selector(courseListScrollTo:)]) {

? ? ? ? NSString*day =@"";

? ? ? ? if(collectionView ==self.collectionView) {

? ? ? ? ? ? day =self.showDateObjects[indexPath.row];

? ? ? ? }

? ? ? ? if(day.intValue<10) {

? ? ? ? ? ? day = [NSStringstringWithFormat:@"0%@",day];

? ? ? ? }

? ? ? ? if(indexPath.row<10&& day.intValue>20) {

? ? ? ? ? ? day = [NSStringstringWithFormat:@"%@-%@",self.lastDateStr,day];

? ? ? ? }

? ? ? ? elseif(indexPath.row>20&& day.intValue<10) {

? ? ? ? ? ? day = [NSStringstringWithFormat:@"%@-%@",self.nextDateStr,day];

? ? ? ? }

? ? ? ? else{

? ? ? ? ? ? day = [NSStringstringWithFormat:@"%@-%@",self.currentDateStr,day];

? ? ? ? }

? ? ? ? [self.delegate courseListScrollTo:day];

? ? }

}

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {

? ? BOOLscrollToScrollStop = !scrollView.tracking&& !scrollView.dragging&& !scrollView.decelerating;

? ? if(scrollToScrollStop) {

? ? ? ? // 停止后要執(zhí)行的代碼

? ? ? ? NSLog(@"停止后要執(zhí)行的代碼11111");

? ? ? ? CGFloatx = scrollView.contentOffset.x;

? ? ? ? NSLog(@"停止后要執(zhí)行的代碼11111----%f--------",x);

? ? ? ? if(x ==0) {

? ? ? ? ? ? //向左滑動

? ? ? ? ? ? [selflastClick];

? ? ? ? ? ? self.selectIndex=100;

? ? ? ? }

? ? ? ? elseif(x ==SCREEN_WIDTH*2){

? ? ? ? ? ? //向右滑動

? ? ? ? ? ? [selfnextClick];

? ? ? ? ? ? self.selectIndex=100;

? ? ? ? }

? ? }

}

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate {

? ? if(!decelerate) {

? ? ? ? BOOLdragToDragStop = scrollView.tracking&& !scrollView.dragging&& !scrollView.decelerating;

? ? ? ? if(dragToDragStop) {

? ? ? ? ? ? // 停止后要執(zhí)行的代碼

? ? ? ? ? ? NSLog(@"停止后要執(zhí)行的代碼222222");

? ? ? ? }

? ? }

}

//刷新下藍色點點

- (void)setData:(NSArray*)array{

? ? [self.lastList removeAllObjects];

? ? [self.currentList removeAllObjects];

? ? [self.nextList removeAllObjects];

? ? for(NSDictionary*dicinarray) {

? ? ? ? NSString*time = dic[@"startTime"];

? ? ? ? if(time.length>8) {

? ? ? ? ? ? NSString *day = [NSString stringWithFormat:@"%d",[time substringFromIndex:8].intValue];

? ? ? ? ? ? time = [timesubstringToIndex:7];

? ? ? ? ? ? if([timeisEqualToString:self.currentDateStr]) {

? ? ? ? ? ? ? ? [self.currentListaddObject:day];

? ? ? ? ? ? }

? ? ? ? ? ? elseif([timeisEqualToString:self.nextDateStr]){

? ? ? ? ? ? ? ? [self.nextListaddObject:day];

? ? ? ? ? ? }

? ? ? ? ? ? elseif([timeisEqualToString:self.lastDateStr]){

? ? ? ? ? ? ? ? [self.lastListaddObject:day];

? ? ? ? ? ? }

? ? ? ? }

? ? }

? ? [self.collectionView reloadData];

}

@end

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容