// // YMMineUserInfoDateView.m // YUMI // // Created by YUMI on 2021/9/23. // #import "XPMineUserInfoDateView.h" ///Third #import ///Tool #import "DJDKMIMOMColor.h" @interface XPMineUserInfoDateView () @property (nonatomic,strong)NSMutableArray * selDateArray; @property (nonatomic,strong)NSDateComponents * components;//时间结构体、可计算时间间隔、获取年月日时分、 @property(nonatomic,strong) UIView *bgView; /// @property (nonatomic,strong) UIButton *cancleButton; /// @property (nonatomic,strong) UIButton *sureButton; /// @property (nonatomic, strong) UIPickerView *pickerView; ///样式 @property (nonatomic, strong) NSDateFormatter *dateFormatter; ///年龄 @property(nonatomic,strong) UILabel *ageView; ///星座 //@property(nonatomic,strong) UILabel *starView; @property(nonatomic,strong) NSMutableArray *dataSourceArray; @end @implementation XPMineUserInfoDateView - (instancetype)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { [self initSubViews]; [self initSubViewConstraints]; } return self; } #pragma mark - Private Method - (void)initSubViews { self.backgroundColor = [UIColor clearColor]; [self addSubview:self.cancleButton]; [self addSubview:self.bgView]; [self.bgView addSubview:self.ageView]; // [self.bgView addSubview:self.starView]; [self.bgView addSubview:self.sureButton]; [self.bgView addSubview:self.pickerView]; } - (void)initSubViewConstraints { [self.cancleButton mas_makeConstraints:^(MASConstraintMaker *make) { make.edges.equalTo(self); }]; [self.bgView mas_makeConstraints:^(MASConstraintMaker *make) { make.leading.bottom.trailing.equalTo(self).inset(kGetScaleWidth(0)); make.height.mas_equalTo(kGetScaleWidth(383)); }]; [self.ageView mas_makeConstraints:^(MASConstraintMaker *make) { make.top.mas_equalTo(kGetScaleWidth(16)); make.width.mas_equalTo(kGetScaleWidth(98)); make.height.mas_equalTo(kGetScaleWidth(36)); // make.leading.mas_equalTo(kGetScaleWidth(80)); make.centerX.equalTo(self); }]; // [self.starView mas_makeConstraints:^(MASConstraintMaker *make) { // make.trailing.mas_equalTo(-kGetScaleWidth(80)); // make.top.mas_equalTo(kGetScaleWidth(16)); // make.width.mas_equalTo(kGetScaleWidth(98)); // make.height.mas_equalTo(kGetScaleWidth(36)); // }]; [self.sureButton mas_makeConstraints:^(MASConstraintMaker *make) { make.bottom.mas_equalTo(-kGetScaleWidth(42)); make.centerX.equalTo(self.bgView); make.width.mas_equalTo(kGetScaleWidth(303)); make.height.mas_equalTo(kGetScaleWidth(48)); }]; [self.pickerView mas_makeConstraints:^(MASConstraintMaker *make) { make.leading.trailing.mas_equalTo(self); make.bottom.equalTo(self.sureButton.mas_top); make.top.equalTo(self.ageView.mas_bottom).mas_offset(kGetScaleWidth(10)); }]; } #pragma mark- UIPickerViewDelegate,UIPickerViewDataSource -(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{ return 3; } -(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{ return [_dataSourceArray[component] count]; } -(CGFloat)pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component{ return KScreenWidth/3; } -(CGFloat)pickerView:(UIPickerView *)pickerView rowHeightForComponent:(NSInteger)component{ return kGetScaleWidth(40); } -(UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view{ [self changeSpearatorLineColor]; UIView *bgView = (UIView *)view; UILabel *lab = [view viewWithTag:100]; if (!bgView) { bgView = [UIView new]; bgView.backgroundColor = [UIColor clearColor]; } if(!lab){ lab = [UILabel labelInitWithText:@"" font:kFontRegular(20) textColor:UIColorFromRGB(0x1E1E1F)]; [bgView addSubview:lab]; CGFloat x ; if(component == 0){ x = kGetScaleWidth(20) ; }else if(component == 1){ x = kGetScaleWidth(10) ; }else{ x = 0 ; } [lab mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(bgView); make.leading.mas_equalTo(kGetScaleWidth(x)); make.width.mas_equalTo(kGetScaleWidth(98)); make.height.mas_equalTo(kGetScaleWidth(40)); }]; lab.layer.cornerRadius = kGetScaleWidth(8); lab.layer.masksToBounds = YES; lab.textAlignment = NSTextAlignmentCenter; lab.tag = 100; }else{ CGFloat x ; if(component == 0){ x = kGetScaleWidth(20) ; }else if(component == 1){ x = kGetScaleWidth(10) ; }else{ x = 0 ; } [lab mas_remakeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(bgView); make.leading.mas_equalTo(kGetScaleWidth(x)); make.width.mas_equalTo(kGetScaleWidth(98)); make.height.mas_equalTo(kGetScaleWidth(40)); }]; } NSArray *yearArr = @[YMLocalizedString(@"XPIncomeRecordGoldDetailsPickViewView3") ,YMLocalizedString(@"XPIncomeRecordGoldDetailsPickViewView4"),YMLocalizedString(@"XPIncomeRecordGoldDetailsPickViewView5")]; if ([self.selDateArray[component]isEqualToString:self.dataSourceArray[component][row]] ) { lab.backgroundColor = UIColorFromRGB(0xF7F7F7); lab.font = kFontRegular(20); lab.text = [NSString stringWithFormat:@"%@%@",self.selDateArray[component],yearArr[component]]; lab.textColor = UIColorFromRGB(0x1E1E1F); }else{ lab.backgroundColor = [UIColor clearColor]; lab.font = kFontRegular(18); lab.text = [NSString stringWithFormat:@"%@%@",self.dataSourceArray[component][row],yearArr[component]]; lab.textColor = UIColorRGBAlpha(0x1E1E1F, 0.6); } return bgView; } #pragma mark - 改变分割线的颜色 - (void)changeSpearatorLineColor { for(UIView *speartorView in _pickerView.subviews) { if (speartorView.frame.size.height < 80) {//找出当前的 View speartorView.backgroundColor = [UIColor clearColor]; }else{ speartorView.backgroundColor = [UIColor clearColor]; } } } -(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{ [self.selDateArray replaceObjectAtIndex:component withObject:self.dataSourceArray[component][row]]; [pickerView reloadAllComponents]; NSString *time = [NSString stringWithFormat:@"%@-%@-%@",self.selDateArray[0],self.selDateArray[1],self.selDateArray[2]]; NSDate *date = [NSDate at_dateFromString:time]; NSTimeInterval interval = [date timeIntervalSince1970] * 1000; self.ageView.text = [NSString stringWithFormat:@"%ld%@",[PLTimeUtil ageWithDateFromBirth:interval],YMLocalizedString(@"XPMineUserInfoDateView3")]; // self.starView.text = [NSString stringWithFormat:@"%@%@",[NSString getCalculateConstellationTextWithMonth:interval],YMLocalizedString(@"XPMineUserInfoDateView4")] ; } //数据源 -(NSMutableArray *)dataSourceArray{ if(!_dataSourceArray){ // 获取当前日期 NSDate *currentDate = [NSDate date]; // 创建日历对象 NSCalendar *calendar = [NSCalendar currentCalendar]; // 获取年、月、日组件 NSDateComponents *components = [calendar components:(NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay) fromDate:currentDate]; NSInteger year = [components year]; NSMutableArray * yearArr = [@[]mutableCopy]; for (int i = 1900; i <= year; i++) { [yearArr addObject:@(i).stringValue]; } NSArray * monthArr = @[@"01",@"02",@"03",@"04",@"05",@"06",@"07",@"08",@"09",@"10",@"11",@"12"]; NSArray * dayArr = [self dayArrayMonth:self.components.month year:self.components.year]; NSArray * array = @[yearArr,monthArr,dayArr]; _dataSourceArray = [array mutableCopy]; } return _dataSourceArray; } //根据月份返回日期 -(NSArray *)dayArrayMonth:(NSInteger)month year:(NSInteger)year{ NSArray * dayArr = [[NSArray alloc]init]; switch (month) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: dayArr = @[@"01",@"02",@"03",@"04",@"05",@"06",@"07",@"08",@"09",@"10",@"11",@"12",@"13",@"14",@"15",@"16",@"17",@"18",@"19",@"20",@"21",@"22",@"23",@"24",@"25",@"26",@"27",@"28",@"29",@"30",@"31"]; break; case 4: case 6: case 9: case 11: dayArr = @[@"01",@"02",@"03",@"04",@"05",@"06",@"07",@"08",@"09",@"10",@"11",@"12",@"13",@"14",@"15",@"16",@"17",@"18",@"19",@"20",@"21",@"22",@"23",@"24",@"25",@"26",@"27",@"28",@"29",@"30"]; break; case 2: if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {///是润年 dayArr = @[@"01",@"02",@"03",@"04",@"05",@"06",@"07",@"08",@"09",@"10",@"11",@"12",@"13",@"14",@"15",@"16",@"17",@"18",@"19",@"20",@"21",@"22",@"23",@"24",@"25",@"26",@"27",@"28",@"29"]; }else{ dayArr = @[@"01",@"02",@"03",@"04",@"05",@"06",@"07",@"08",@"09",@"10",@"11",@"12",@"13",@"14",@"15",@"16",@"17",@"18",@"19",@"20",@"21",@"22",@"23",@"24",@"25",@"26",@"27",@"28"]; } break; default: break; } return dayArr; } #pragma mark - Event - (void)onClickCancelButton:(UIButton *)sender { self.backgroundColor = [UIColor clearColor]; [UIView animateWithDuration:0.5 animations:^{ self.frame = CGRectMake(0, KScreenHeight, KScreenWidth, KScreenHeight); }completion:^(BOOL finished) { [self removeFromSuperview]; }]; } - (void)onClickSureButton:(UIButton *)sender { if (self.delegate && [self.delegate respondsToSelector:@selector(xPMineUserInfoDateView:didClickSureButton:)]) { NSString *time = [NSString stringWithFormat:@"%@-%@-%@",self.selDateArray[0],self.selDateArray[1],self.selDateArray[2]]; [self.delegate xPMineUserInfoDateView:self didClickSureButton:time]; } self.backgroundColor = [UIColor clearColor]; [UIView animateWithDuration:0.5 animations:^{ self.frame = CGRectMake(0, KScreenHeight, KScreenWidth, KScreenHeight); }completion:^(BOOL finished) { [self removeFromSuperview]; }]; } //分解传来需要显示的时间 -(NSArray *)receiveTime:(NSString *)timeStr{ NSArray * timeArray = [timeStr componentsSeparatedByString:@"-"]; NSMutableArray * timeArr = [[NSMutableArray alloc]init]; for (int i = 0; i