// // PBEditDateView.m // IphoneBIMe // // Created by zjf on 2018/8/20. // Copyright © 2018年 ProBIM. All rights reserved. // #import "PBEditDateView.h" #import "PBIssueAddModel.h" #define MAXYEAR 2099 #define MINYEAR 2000 @interface PBEditDateView() { //日期存储数组 NSMutableArray *_yearArray; NSMutableArray *_monthArray; NSMutableArray *_dayArray; NSString *_dateFormatter; //记录位置 NSInteger yearIndex; NSInteger monthIndex; NSInteger dayIndex; } @property (nonatomic, weak) UILabel *endDateL; @property (nonatomic, weak) UILabel *endDatesSelectL; @property (nonatomic, weak) UILabel *promptL; @property (nonatomic,strong)UIPickerView *datePicker; @property (nonatomic, strong) UIView *bgView; @property (nonatomic, copy) NSString *selectDateStr; @end @implementation PBEditDateView - (instancetype)initWithFrame:(CGRect)frame { if (self = [super initWithFrame:frame]) { self.backgroundColor = [[UIColor blackColor]colorWithAlphaComponent:0]; [self addSubview:self.bgView]; _dateFormatter = @"yyyy-MM-dd"; [self setupUI]; [self defaultConfig]; } return self; } -(void)defaultConfig { //设置年月日时分数据 _yearArray = [self setArray:_yearArray]; _monthArray = [self setArray:_monthArray]; _dayArray = [self setArray:_dayArray]; for (int i=1; i<13; i++) { NSString *num = [NSString stringWithFormat:@"%02d",i]; [_monthArray addObject:num]; } for (NSInteger i=MINYEAR; i<=MAXYEAR; i++) { NSString *num = [NSString stringWithFormat:@"%ld",(long)i]; [_yearArray addObject:num]; } } - (NSMutableArray *)setArray:(id)mutableArray { if (mutableArray) [mutableArray removeAllObjects]; else mutableArray = [NSMutableArray array]; return mutableArray; } - (void)setupUI { UIView *topView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.bgView.width, 3)]; topView.backgroundColor = WarningColor; [self.bgView addSubview:topView]; UILabel *endDateL = [UILabel z_labelWithText:@"截止日期" Color:PromptColor isBold:NO Font:DescFontSize]; [self.bgView addSubview:endDateL]; [endDateL mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(topView.mas_bottom).offset(31); make.centerX.equalTo(self.bgView); make.height.equalTo(@20); }]; UILabel *endDatesSelectL = [UILabel z_labelWithText:@"请选择" Color:IgnoreColor isBold:NO Font:MarkedFontSize]; endDatesSelectL.textAlignment = NSTextAlignmentCenter; [self.bgView addSubview:endDatesSelectL]; [endDatesSelectL mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(endDateL.mas_bottom).offset(14); make.left.equalTo(self.bgView).offset(16); make.right.equalTo(self.bgView).offset(-16); make.height.equalTo(@25); }]; UIView *lin1View = [[UIView alloc] init]; lin1View.backgroundColor = [UIColor z_colorWithR:242 G:242 B:242]; [self.bgView addSubview:lin1View]; [lin1View mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(endDatesSelectL.mas_bottom).offset(39); make.left.right.equalTo(self.bgView); make.height.equalTo(@1); }]; UILabel *promptL =[UILabel z_labelWithText:@"请选择截止日期" Color:PromptColor isBold:NO Font:MarkedFontSize]; promptL.textAlignment = NSTextAlignmentCenter; [self.bgView addSubview:promptL]; [promptL mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(lin1View).offset(15); make.size.mas_equalTo(CGSizeMake(150, 25)); make.centerX.equalTo(self.bgView); }]; UIButton *emptyBtn = [UIButton z_textButton:@"清空" fontSize:MarkedFontSize normalColor:PromptColor]; [self.bgView addSubview:emptyBtn]; [emptyBtn addTarget:self action:@selector(emptyBtnBtnActio) forControlEvents:UIControlEventTouchUpInside]; [emptyBtn mas_makeConstraints:^(MASConstraintMaker *make) { make.centerY.equalTo(promptL); make.left.equalTo(self.bgView).offset(16); make.size.mas_equalTo(CGSizeMake(52, 50)); }]; UIButton *determineBtn = [UIButton z_textButton:@"确定" fontSize:MarkedFontSize normalColor:WarningColor]; [self.bgView addSubview:determineBtn]; [determineBtn addTarget:self action:@selector(determineBtnActio) forControlEvents:UIControlEventTouchUpInside]; [determineBtn mas_makeConstraints:^(MASConstraintMaker *make) { make.centerY.equalTo(promptL); make.right.equalTo(self.bgView).offset(-16); make.size.mas_equalTo(CGSizeMake(52, 50)); }]; UIView *lin2View = [[UIView alloc] init]; lin2View.backgroundColor = [UIColor z_colorWithR:242 G:242 B:242]; [self.bgView addSubview:lin2View]; [lin2View mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(promptL.mas_bottom).offset(13); make.left.right.equalTo(self.bgView); make.height.equalTo(@1); }]; [self.bgView addSubview:self.datePicker]; [self.datePicker mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(lin2View.mas_bottom).offset(16); make.left.equalTo(self.bgView).offset(44); make.right.equalTo(self.bgView).offset(-44); make.height.equalTo(@282); }]; self.endDateL = endDateL; self.endDatesSelectL = endDatesSelectL; self.promptL = promptL; } - (void)determineBtnActio { int result; if (self.stareDate == nil) { NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateFormat:@"yyyy-MM-dd"]; NSString *todayStr = [dateFormatter stringFromDate:[NSDate date]]; result = [self compareOneDay:todayStr withAnotherDay:self.selectDateStr]; }else { result = [self compareOneDay:self.stareDate withAnotherDay:self.selectDateStr]; } if (result == 1) { [YJProgressHUD showMessage:@"截止日期不应小于开始日期" inView:self]; return; }else { self.IssueAddModel.dateStr = self.selectDateStr; if (self.EditCompleteBlock) { self.EditCompleteBlock(); } [self hidden]; } } #pragma mark - 时间比较大小 - (int)compareOneDay:(NSString *)oneDayStr withAnotherDay:(NSString *)anotherDayStr { NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateFormat:@"yyyy-MM-dd"]; // NSString *oneDayStr = [dateFormatter stringFromDate:oneDay]; // NSString *anotherDayStr = [dateFormatter stringFromDate:anotherDay]; NSDate *dateA = [dateFormatter dateFromString:oneDayStr]; NSDate *dateB = [dateFormatter dateFromString:anotherDayStr]; NSComparisonResult result = [dateA compare:dateB]; if (result == NSOrderedDescending) { //oneDay > anotherDay return 1; }else if (result == NSOrderedAscending){ //oneDay < anotherDay return -1; } //oneDay = anotherDay return 0; } - (void)emptyBtnBtnActio { self.IssueAddModel.dateStr = nil; if (self.EditCompleteBlock) { self.EditCompleteBlock(); } [self hidden]; } - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { CGPoint point=[[touches anyObject]locationInView:self]; CALayer *layer=[self.layer hitTest:point]; if (layer ==self.layer) { [self hidden]; } } - (void)hidden { [UIView animateWithDuration:0.3 animations:^{ self.backgroundColor = [[UIColor blackColor]colorWithAlphaComponent:0]; self.bgView.y = PBScreenHeight; }completion:^(BOOL finished) { for (UIView *cover in PBKeyWindow.subviews) { if ([cover isKindOfClass:[PBEditDateView class]]) { [cover removeFromSuperview]; } } }]; } - (void)show { [UIView animateWithDuration:0.3 animations:^{ self.backgroundColor = [[UIColor blackColor]colorWithAlphaComponent:0.5]; self.bgView.y = PBScreenHeight - self.visualViewHeight; }]; } #pragma mark - 懒加载 - (UIView *)bgView { if (_bgView == nil) { _bgView = [[UIView alloc]initWithFrame:CGRectMake(0, PBScreenHeight, PBScreenWidth, PBScreenHeight)]; _bgView.backgroundColor = [UIColor whiteColor]; } return _bgView; } - (UIPickerView *)datePicker { if (_datePicker == nil) { _datePicker = [[UIPickerView alloc] init]; _datePicker.showsSelectionIndicator = YES; _datePicker.delegate = self; _datePicker.dataSource = self; } return _datePicker; } - (void)setVisualViewHeight:(NSInteger)visualViewHeight { _visualViewHeight = visualViewHeight; } #pragma mark - UIPickerViewDelegate,UIPickerViewDataSource - (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView { return 3; } - (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component { NSArray *numberArr = [self getNumberOfRowsInComponent]; return [numberArr[component] integerValue]; } -(NSArray *)getNumberOfRowsInComponent { NSInteger yearNum = _yearArray.count; NSInteger monthNum = _monthArray.count; NSInteger dayNum = [self DaysfromYear:[_yearArray[yearIndex] integerValue] andMonth:[_monthArray[monthIndex] integerValue]]; return @[@(yearNum),@(monthNum),@(dayNum)]; } - (CGFloat)pickerView:(UIPickerView *)pickerView rowHeightForComponent:(NSInteger)component { return 60; } - (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view { UILabel *customLabel = (UILabel *)view; if (!customLabel) { customLabel = [[UILabel alloc] init]; customLabel.textAlignment = NSTextAlignmentCenter; [customLabel setFont:[UIFont systemFontOfSize:20]]; } NSString *title; if (component==0) { title = _yearArray[row]; }else if (component==1) { title = _monthArray[row]; }else if (component==2) { title = _dayArray[row]; } customLabel.text = title; customLabel.textColor = TitleColor; return customLabel; } - (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component { if (component == 0) { yearIndex = row; } if (component == 1) { monthIndex = row; } if (component == 2) { dayIndex = row; } if (component == 0 || component == 1){ [self DaysfromYear:[_yearArray[yearIndex] integerValue] andMonth:[_monthArray[monthIndex] integerValue]]; if (_dayArray.count-1