// // NewTrackVC.m // tongxin // // Created by weichao on 2019/8/23. // Copyright © 2019 xTT. All rights reserved. // #import "NewTrackVC.h" #import "TrackInfoViewController.h" #import "TrackViewController.h" #import "VRGCalendarView.h" #import "Track.h" #define SHOWMAPoffsetY ScreenHeight-getRectNavAndStatusHight-50 @interface NewTrackVC () { VRGCalendarView *calendar; UIControl *_overlayView; } /** 是否正在加载 */ @property (assign, nonatomic) BOOL isLoading; /** 对应的 日期的轨迹列表 */ @property (strong, nonatomic) NSMutableArray *trackListDate; /** 是否是显示地图 子 VC */ @property (assign, nonatomic) BOOL isShowMap; /** 当前选择的Model */ @property (strong, nonatomic) Track *selectTrack; /** 显示时间轴的 控制器 */ @property (strong, nonatomic) TrackViewController *showMessageVC; /** 显示地图页面的 控制器 */ @property (strong, nonatomic) TrackInfoViewController *mapInfoVC; @end @implementation NewTrackVC -(NSMutableArray *)trackListDate{ if(!_trackListDate){ _trackListDate = [NSMutableArray array]; } return _trackListDate; } - (void)viewDidLoad { [super viewDidLoad]; [self initView]; [self loadMoreDataWithTrack:nil]; [self.zx_navRightBtn setTitle:@"地图查看" forState:UIControlStateNormal]; [self.zx_navRightBtn setTitle:@"轨迹查看" forState:UIControlStateSelected]; [self.zx_navRightBtn setTitleColor:KKWhiteColorColor forState:0]; [self zx_rightClickedBlock:^(ZXNavItemBtn * _Nonnull btn) { self.zx_navRightBtn.selected = !self.zx_navRightBtn.selected; [self rightBarItemClick]; }]; } - (void)loadMoreDataWithTrack:(Track *)track{ WEAKSELF NSString *ID ; if (track) { ID = track.id; } [Track getObjsWithID:ID success:^(NSMutableArray *arr) { if(arr.count > 0 ) { if(weakSelf.trackListDate.count > 0) { [weakSelf.trackListDate removeAllObjects]; } [weakSelf.trackListDate addObjectsFromArray:arr]; } else { //为 0 的情况 [weakSelf.trackListDate removeAllObjects]; } //MARK: 加载完数据 刷新一下 当前日期的数据 [weakSelf getCurrentTrackDate]; } failure:^(NSError *error){ }]; } - (void)initView{ [self setDayTimeLabelText:@"今天"]; [self.dayTimeBtn setTitleColor:mainColor forState:0]; self.beforeDayBtn.layer.cornerRadius = 3; self.beforeDayBtn.layer.masksToBounds = YES; [self.beforeDayBtn setBackgroundColor:mainColor]; self.afterDayBtn.layer.cornerRadius = 3; self.afterDayBtn.layer.masksToBounds = YES; [self.afterDayBtn setBackgroundColor:mainColor]; //默认后一天的按钮不能按 [self setBtnBadRoGoodFlag:NO WithBtn:self.afterDayBtn]; [self.topView mas_remakeConstraints:^(MASConstraintMaker *make) { make.left.right.equalTo(self.view); make.top.equalTo(self.view).offset(iPhoneX_NavHeight); make.height.mas_equalTo(50); }]; //设置 容器View self.collectionView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, iPhoneX_NavHeight+50, ScreenWidth, ScreenHeight-getRectNavAndStatusHight-50)]; [self.view addSubview:self.collectionView]; self.collectionView.bounces = NO; self.collectionView.contentSize = CGSizeMake(self.collectionView.bounds.size.width, self.collectionView.bounds.size.height*2); self.collectionView.showsVerticalScrollIndicator = NO; self.collectionView.showsHorizontalScrollIndicator = NO; self.collectionView.pagingEnabled = YES; self.collectionView.scrollEnabled = NO; self.collectionView.delegate = self; UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; self.showMessageVC = [sb instantiateViewControllerWithIdentifier:@"TrackViewController"]; //MARK: 删除数据回调 WEAKSELF self.showMessageVC.delectBlockCall = ^{ [weakSelf loadMoreDataWithTrack:nil]; }; [self addChildViewController:self.showMessageVC]; self.showMessageVC.view.frame = CGRectMake(0, 0, ScreenWidth, SHOWMAPoffsetY-60); //这个60 是轨迹页面还有个头部 self.showMessageVC.tableViewHeightNSLC.constant = SHOWMAPoffsetY-60; [self.collectionView addSubview:self.showMessageVC.view]; self.mapInfoVC = [sb instantiateViewControllerWithIdentifier:@"TrackInfoViewController"]; [self addChildViewController:self.mapInfoVC]; self.mapInfoVC.view.frame = CGRectMake(0, SHOWMAPoffsetY, ScreenWidth, SHOWMAPoffsetY); self.mapInfoVC.mapViewHeightNSLC.constant = SHOWMAPoffsetY; [self.collectionView addSubview:self.mapInfoVC.view]; } - (void)rightBarItemClick { if(self.collectionView.contentOffset.y == 0 || self.collectionView.contentOffset.y == SHOWMAPoffsetY) { // [self setBtnBadRoGoodFlag:NO WithBtn:self.rightBarButton]; [self reloadChildVC]; }else{ //如果还在运动中就狂点,不做操作 return; } } - (void)reloadChildVC { WEAKSELF // if(self.zx_navRightBtn) // { if(self.zx_navRightBtn.selected) { [self.collectionView setContentOffset:CGPointMake(0, SHOWMAPoffsetY) animated:YES]; [self.mapInfoVC loadWithInfoTrack:self.selectTrack Back:^{ //[weakSelf setBtnBadRoGoodFlag:YES WithBtn:weakSelf.rightBarButton]; weakSelf.isLoading = NO; }]; } else { [self.collectionView setContentOffset:CGPointMake(0, 0) animated:YES]; [self.showMessageVC loadWithInfoTrack:self.selectTrack Back:^{ //[weakSelf setBtnBadRoGoodFlag:YES WithBtn:weakSelf.rightBarButton]; weakSelf.isLoading = NO; }]; } // } // else // { // //恢复成 文字轨迹页面 // [self.collectionView setContentOffset:CGPointMake(0, 0) animated:YES]; // [self.showMessageVC loadWithInfoTrack:self.selectTrack Back:^{ // // [weakSelf setBtnBadRoGoodFlag:YES WithBtn:weakSelf.rightBarButton]; // weakSelf.isLoading = NO; // }]; // } } /** //MARK:----点击日期标题,显示日历的方法 */ - (IBAction)dayTimeBtnAction{ [self dismissCalendarView]; _overlayView = [[UIControl alloc]initWithFrame:self.view.bounds]; [_overlayView addTarget:self action:@selector(dismissCalendarView) forControlEvents:UIControlEventTouchUpInside]; calendar = [[VRGCalendarView alloc] init]; calendar.limitDay = 60; // CGRect c = calendar.frame; // c.origin.y = iPhoneX_NavHeight+50; // calendar.frame = c; calendar.frame = CGRectMake(0, iPhoneX_NavHeight+50, ScreenWidth, calendar.frame.size.height); calendar.delegate=self; NSDate *selectDate; if([self.dayTimeBtn.titleLabel.text isEqualToString:@"今天"]){ //今天 selectDate = [NSDate dateWithTimeIntervalSince1970:[NSDate date].timeIntervalSince1970]; }else if([self.dayTimeBtn.titleLabel.text isEqualToString:@"昨天"]){ //昨天 selectDate = [NSDate dateWithTimeIntervalSince1970:[NSDate date].timeIntervalSince1970 - 60*60*24]; }else{ NSDateFormatter * dateF = [[NSDateFormatter alloc]init]; [dateF setCalendar:[[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian]]; [dateF setDateFormat:@"yyyy-MM-dd"]; NSDate *date =[dateF dateFromString:self.dayTimeBtn.titleLabel.text]; selectDate = date; } //今天 // selectDate = [NSDate dateWithTimeIntervalSince1970:[NSDate date].timeIntervalSince1970]; calendar.selectedDate = selectDate; calendar.alpha = 1; [self.view addSubview:_overlayView]; [self.view addSubview:calendar]; } - (void)dismissCalendarView{ if(_overlayView){ [_overlayView removeFromSuperview]; _overlayView = nil; [UIView animateWithDuration:0.35 animations:^{ calendar.alpha = 0; }completion:^(BOOL finished) { [calendar removeFromSuperview]; }]; [self.dayTimeIconBtn setImage:[UIImage imageNamed:@"icon_drop-down"] forState:0]; } } #pragma mark - 日期选择Delegate -(void)calendarView:(VRGCalendarView *)calendarView switchedToMonth:(int)month targetHeight:(float)targetHeight animated:(BOOL)animated { } -(void)calendarView:(VRGCalendarView *)calendarView dateSelected:(NSDate *)date { NSString *selectDay = [myHelper getDateFormatWithStr:@"yyyy-MM-dd" date:date]; //对比昨天和今天 //昨天 NSString *yesterday = [myHelper getDateFormatWithStr:@"yyyy-MM-dd" timeInterval:[NSDate date].timeIntervalSince1970 - 60*60*24]; //今天 NSString *today = [myHelper getDateFormatWithStr:@"yyyy-MM-dd" timeInterval:[NSDate date].timeIntervalSince1970]; if([selectDay isEqualToString:yesterday]){ [self setDayTimeLabelText:@"昨天"]; }else if([selectDay isEqualToString:today]){ [self setDayTimeLabelText:@"今天"]; }else{ [self setDayTimeLabelText:selectDay]; } [self getCurrentTrackDate]; [self dismissCalendarView]; } - (IBAction)dayBtnAction:(UIButton *)sender { if(self.isLoading){ return; } self.isLoading = YES; NSMutableDictionary * params = [NSMutableDictionary dictionary]; self.zx_navRightBtn.selected = NO; if([sender isEqual:self.beforeDayBtn]) { //按了前一天的按钮 NSString *paramsDay; if([self.dayTimeBtn.titleLabel.text isEqualToString:@"今天"]){ //昨天 paramsDay = [myHelper getDateFormatWithStr:@"yyyy-MM-dd" timeInterval:[NSDate date].timeIntervalSince1970 - 60*60*24]; [self setDayTimeLabelText: @"昨天"]; }else if([self.dayTimeBtn.titleLabel.text isEqualToString:@"昨天"]){ paramsDay = [myHelper getDateFormatWithStr:@"yyyy-MM-dd" timeInterval:[NSDate date].timeIntervalSince1970 - 2 * 60*60*24]; [self setDayTimeLabelText: paramsDay]; }else{ //当前位置的天数转换成的时间戳 NSTimeInterval tempTime = [myHelper getDateWithStr:self.dayTimeBtn.titleLabel.text dateFormat:@"yyyy-MM-dd"].timeIntervalSince1970; paramsDay = [myHelper getDateFormatWithStr:@"yyyy-MM-dd" timeInterval:tempTime - 60*60*24]; [self setDayTimeLabelText: paramsDay]; } [params setValue:paramsDay forKey:@"date"]; } else if([sender isEqual:self.afterDayBtn]) { if([self.dayTimeBtn.titleLabel.text isEqualToString:@"今天"]){ return; } //后一天 if([self.dayTimeBtn.titleLabel.text isEqualToString:@"昨天"]){ [self setDayTimeLabelText:@"今天"]; params = nil; }else{ //当前位置的天数转换成的时间戳 NSTimeInterval tempTime = [myHelper getDateWithStr:self.dayTimeBtn.titleLabel.text dateFormat:@"yyyy-MM-dd"].timeIntervalSince1970; NSString *paramsDay = [myHelper getDateFormatWithStr:@"yyyy-MM-dd" timeInterval:tempTime + 60*60*24]; //对比昨天和今天 //昨天 NSString *yesterday = [myHelper getDateFormatWithStr:@"yyyy-MM-dd" timeInterval:[NSDate date].timeIntervalSince1970 - 60*60*24]; //今天 NSString *today = [myHelper getDateFormatWithStr:@"yyyy-MM-dd" timeInterval:[NSDate date].timeIntervalSince1970]; if([paramsDay isEqualToString:yesterday]){ [self setDayTimeLabelText:@"昨天"]; }else if([paramsDay isEqualToString:today]){ [self setDayTimeLabelText:@"今天"]; }else{ [self setDayTimeLabelText:paramsDay]; } [params setValue:paramsDay forKey:@"date"]; } } else { params = nil; } [self getCurrentTrackDate]; } -(void)setDayTimeLabelText:(NSString*)day{ [self.dayTimeBtn setTitle:day forState:0]; } /** 查询 当前日期 的轨迹数据 */ -(void)getCurrentTrackDate{ // 查询轨迹数据 NSString *currenDateStr = @""; if([self.dayTimeBtn.titleLabel.text isEqualToString:@"今天"]){ //今天 NSString *today = [myHelper getDateFormatWithStr:@"yyyy-MM-dd" timeInterval:[NSDate date].timeIntervalSince1970]; //[params setValue:today forKey:@"date"]; currenDateStr = today; [self setBtnBadRoGoodFlag:NO WithBtn:self.afterDayBtn]; }else if([self.dayTimeBtn.titleLabel.text isEqualToString:@"昨天"]){ //昨天 NSString *yesterday = [myHelper getDateFormatWithStr:@"yyyy-MM-dd" timeInterval:[NSDate date].timeIntervalSince1970 - 60*60*24]; // [params setValue:yesterday forKey:@"date"]; currenDateStr = yesterday; [self setBtnBadRoGoodFlag:YES WithBtn:self.afterDayBtn]; }else{ // [params setValue:self.dayTimeBtn.titleLabel.text forKey:@"date"]; currenDateStr = self.dayTimeBtn.titleLabel.text; [self setBtnBadRoGoodFlag:YES WithBtn:self.afterDayBtn]; } self.selectTrack = nil; for(int i = 0; i < self.trackListDate.count; i++){ Track *item = self.trackListDate[i]; if([item.date isEqualToString:currenDateStr]){ self.selectTrack = item; } } self.zx_navRightBtn.hidden = self.selectTrack ? NO : YES; // MARK: 选择的日历时触发 [self reloadChildVC]; } /** 设置按钮不可选且半透明 @param flag Bad is NO , Good is YES @param button button */ -(void)setBtnBadRoGoodFlag:(BOOL)flag WithBtn:(id) button{ if(flag){ if([button isKindOfClass:[UIButton class]]){ [button setAlpha:1]; } [button setEnabled:YES]; }else{ if([button isKindOfClass:[UIButton class]]){ [button setAlpha:0.5]; } [button setEnabled:NO]; } } ////MARK: UIScorllView 代理 ----- //-(void)scrollViewDidScroll:(UIScrollView *)scrollView{ // if ([scrollView isEqual:self.collectionView]) // { // if (scrollView.contentOffset.y <= 0 ) // { // if(self.selectTrack) // { // [self setRightBarBtnTitle:@"地图查看" RoImage:nil]; // } // } // if (scrollView.contentOffset.y >= SHOWMAPoffsetY){ // [self setRightBarBtnTitle:@"轨迹查看" RoImage:nil]; // } // } //} @end