时间空间

来源:互联网 发布:koala for mac 编辑:程序博客网 时间:2024/05/21 12:55


#import <UIKit/UIKit.h>

@protocol TimePickViewDelegate <NSObject>


/**

 *  选择日期确定后的代理事件

 *

 *  @param date 日期

 */

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

/**

 *  日期

 *

 *  @param day   

 *  @param horse 

 *  @param minute

 */

- (void)getSelectDate:(NSString *)day

                horse:(NSString *)horse

               minute:(NSString *)minute;

@end


@interface TimePickView :UIView <UIPickerViewDelegate,UIPickerViewDataSource>

@property (nonatomic,strong)UIView *mainView;

@property (nonatomic,strong)UIButton * cancelBtn;

@property (nonatomic,strong)UIButton * sureBtn;

@property (nonatomic,strong)UIDatePicker *date;

@property (nonatomic,strong)NSString *selectDate;

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

/**

 *  要改的

 */

@property (nonatomic ,strong)UIPickerView *pickerView;

/**

 *  DataHorse

 */

@property (nonatomic ,strong)NSMutableArray *hoursData;

/**

 *  DataMinute

 */

@property (nonatomic ,strong)NSMutableArray *minuteData;

/**

 *  horse

 */

@property (nonatomic ,strong)NSString *horse;

/**

 *  minute

 */

@property (nonatomic,strong)NSString * minute;

/**

 *  day

 */

@property (nonatomic,strong)NSString * day;




#import "TimePickView.h"


@implementation TimePickView


- (instancetype)initWithFrame:(CGRect)frame{

    if(self = [superinitWithFrame:frame]){

        self.backgroundColor = [UIColorcolorWithRed:0green:0blue:0alpha:0.3];

        self.mainView = [[UIViewalloc] init];

//        self.mainView.layer.cornerRadius = 3;

//        self.mainView.layer.borderWidth = 1;

//        self.mainView.layer.borderColor = KDefaultBlue_Color.CGColor;

        self.mainView.backgroundColor = [UIColorwhiteColor];

        [self addSubview:self.mainView];

        WS(weakself);

        [self.mainViewmas_makeConstraints:^(MASConstraintMaker *make) {

//            make.centerX.centerY.equalTo(weakself);

            make.bottom.equalTo(weakself);

            make.centerX.equalTo(weakself);

            make.left.equalTo(weakself);

            make.right.equalTo(weakself);

            make.height.equalTo(@250);

        }];

        self.date = [[UIDatePickeralloc] init];

        /**

         *  暂时注掉

         */

        [self.mainViewaddSubview:self.date];

        UIView *btnView = [[UIViewalloc] init];

        [self.mainViewaddSubview:btnView];

        [btnView mas_makeConstraints:^(MASConstraintMaker *make) {

            make.left.right.top.equalTo(weakself.mainView);

            make.height.equalTo(@50);

        }];

        btnView.backgroundColor = RGB(235, 235,235);

        ;

        self.cancelBtn = [[UIButtonalloc] init];

        self.sureBtn = [[UIButtonalloc] init];

//        self.cancelBtn.backgroundColor = KDefaultBlue_Color;

//        self.sureBtn.backgroundColor = KDefaultBlue_Color;

        [self.sureBtnsetTitleColor:RGB(249,150, 52) forState:UIControlStateNormal];

        [self.cancelBtnsetTitleColor:[UIColorgrayColor] forState:UIControlStateNormal];

//        [self.sureBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];

        [self.sureBtnsetTitle:@"确定"forState:UIControlStateNormal];

//        [self.cancelBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];

        [self.cancelBtnsetTitle:@"取消"forState:UIControlStateNormal];

        [self.sureBtnaddTarget:selfaction:@selector(sureBtnClick:)forControlEvents:UIControlEventTouchUpInside];

        [self.cancelBtnaddTarget:selfaction:@selector(removeBtnClick:)forControlEvents:UIControlEventTouchUpInside];

        [self.mainViewaddSubview:self.cancelBtn];

        [self.mainViewaddSubview:self.sureBtn];

        [self.datemas_makeConstraints:^(MASConstraintMaker *make) {

            make.top.equalTo(weakself.mainView).offset(40);

            make.left.equalTo(weakself.mainView).offset(10);

            make.right.equalTo(weakself.mainView).offset(-10);

            make.bottom.equalTo(weakself.mainView);

        }];

        [self.cancelBtnmas_makeConstraints:^(MASConstraintMaker *make) {

            make.left.equalTo(self.mainView).offset(15);

            make.width.equalTo(@70);

            make.height.equalTo(35);

            make.top.equalTo(weakself.mainView).offset(9);

        }];

        [self.sureBtnmas_makeConstraints:^(MASConstraintMaker *make) {

            make.right.equalTo(self.mainView).offset(-15);

            make.width.equalTo(@70);

            make.height.equalTo(35);

            make.top.equalTo(weakself.mainView).offset(9);

        }];

        self.date.datePickerMode = UIDatePickerModeTime;//模式选择

        NSLocale *locale = [[NSLocalealloc] initWithLocaleIdentifier:@"zh_CN"];//设置为中文

        self.date.locale = locale;

        

        NSDateFormatter *dateFormatter = [[NSDateFormatteralloc] init];//设置输出的格式

        [dateFormatter setDateFormat:@"MM-dd"];

        NSString *crrountTime = [selftimeFormat];

        MYLog(@"%@",crrountTime);

        NSArray *timeArray = [crrountTime  componentsSeparatedByString:@"-"];

//pikeView(后期确定)

        

        self.pickerView = [[UIPickerViewalloc]init];

       

        self.pickerView.delegate =self;

        self.pickerView.dataSource =self;

        [self.pickerViewselectRow:0inComponent:0animated:NO];

        [self.pickerViewselectRow:[timeArray[0]integerValue] inComponent:1animated:NO];

        [self.pickerViewselectRow:[timeArray[1]integerValue]/5inComponent:2animated:NO];

        self.horse = timeArray[0];

        NSInteger min = [timeArray[1]integerValue]/5;

        [self minuteData];

        self.minute =self.minuteData[min];

        self.day =@"今天";

        [self.mainViewaddSubview:self.pickerView];

        [self.pickerViewmas_makeConstraints:^(MASConstraintMaker *make) {

            make.top.equalTo(weakself.mainView).offset(40);

            make.left.equalTo(weakself.mainView).offset(10);

            make.right.equalTo(weakself.mainView).offset(-10);

            make.bottom.equalTo(weakself.mainView);

        }];

        [selfsetDatePickerFont];

        self.date.hidden =YES;

    }

    return self;

}

/**

 *  设置时间格式,可更改HHhh改变日期的显示格式,有12小时和24小时制

 *

 *  @return 时间格式

 */

- (NSString *)timeFormat

{

    NSDate *selected = [self.datedate];

    NSDateFormatter *dateFormatter = [[NSDateFormatteralloc] init];

    [dateFormatter setDateFormat:@"HH-mm"];

    NSString *currentOlderOneDateStr = [dateFormatterstringFromDate:selected];

    return currentOlderOneDateStr;

}

/**

 *  确定按钮点击,会触发代理事件

 */

- (void)sureBtnClick:(UIButton *)sender {

    

    self.selectDate = [selftimeFormat];

    if ([self.delegaterespondsToSelector:@selector(getSelectDate:)]) {

     [self.delegategetSelectDate:self.selectDate];

    }

    if([self.pickerView.delegaterespondsToSelector:@selector(pickerView:didSelectRow:inComponent:)]&&[self.delegaterespondsToSelector:@selector(getSelectDate:horse:minute:)]){

        

        [self.delegategetSelectDate:self.dayhorse:self.horseminute:self.minute];

    }

    // 开始动画

    [UIViewanimateWithDuration:0.2animations:^{

        self.alpha =0;

    } completion:^(BOOL finished) {

        [selfremoveFromSuperview];

    }];

}

/**

 *  取消按钮点击

 */

- (void)removeBtnClick:(UIButton *)sender {

    // 开始动画

    [UIViewanimateWithDuration:0.2animations:^{

        self.alpha =0;

    } completion:^(BOOL finished) {

        [selfremoveFromSuperview];

    }];

}

/**

 *  点击其他地方移除时间选择器

 */

- (void)backGroundBtnClicked:(UIButton *)sender

{

    [selfremoveFromSuperview];

}

//- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{

//    // 开始动画

//    [UIView animateWithDuration:0.2 animations:^{

//        self.alpha = 0;

//    } completion:^(BOOL finished) {

//        [self removeFromSuperview];

//    }];

//}

- (void)setDatePickerFont{

    unsigned outCount;

    int i;

    objc_property_t *pProperty = class_copyPropertyList([UIDatePicker class], &outCount);

    for (i = outCount -1; i >=0; i--)

    {

        // 循环获取属性的名字   property_getName函数返回一个属性的名称

        NSString *getPropertyName = [NSStringstringWithCString:property_getName(pProperty[i])encoding:NSUTF8StringEncoding];

        NSString *getPropertyNameString = [NSStringstringWithCString:property_getAttributes(pProperty[i])encoding:NSUTF8StringEncoding];

        MYLog(@"%@",getPropertyName);

        if([getPropertyName isEqualToString:@"textFont"])

        {

            

            [_datesetValue:[UIFontsystemFontOfSize:12]forKey:@"textFont"];

        }

        

        NSLog(@"%@====%@",getPropertyNameString,getPropertyName);

    }

}


- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{

    return 3;

}

- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{

    if (component ==1) {

        return 24;

    }

    if (component == 2) {

        return 12;

    }

        return 3;

}

- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{


    if (component == 0) {

        if (row == 0) {

            return @"今天";

        }else if(row ==1){

            return @"明天";

        }else{return@"后天";}

}

    if (component == 1) {

        return [NSStringstringWithFormat:@"%@ ", [self.hoursData[row]stringValue]];

    }

    if (component == 2) {

        return [NSStringstringWithFormat:@"%@ ",[self.minuteData[row]stringValue]];

    }

    return nil;

}

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{

    if (component == 0) {

        if(row == 0){

            self.day =@"今天";

        }else if(row==1){

            self.day =@"明天";

        }else if(row==2){

            self.day =@"后天";

        }

    }else if(component ==1){

        self.horse =self.hoursData[row];

    }else if (component ==2){

        self.minute =self.minuteData[row];

   }

}

- (NSMutableArray *)hoursData{

    if (!_hoursData) {

        _hoursData = [NSMutableArrayarray];

    

        for (int i =0; i<24; i++) {

            

            [_hoursData addObject:@(i)];

        }

    }

    return_hoursData;

}

- (NSMutableArray *)minuteData{

    if (!_minuteData) {

        _minuteData = [NSMutableArrayarray];

        

        for (int i =0; i<60; i=i+5) {

//            if (i<=5) {

//                

//                [_minuteData addObject:];

//            }else{

            [_minuteData addObject:@(i)];

//            }

        }

    }

    return_minuteData;

}

@end



//控制器实现代理方法

- (void)getSelectDate:(NSString *)day horse:(NSString *)horse minute:(NSString *)minute{

    MYLog(@"%@,%@,%@",day,horse,minute);

    //获取这个月的天数

    NSDate *today = [NSDatedate];

    NSCalendar *c = [NSCalendarcurrentCalendar];

    NSRange days = [crangeOfUnit:NSDayCalendarUnitinUnit:NSMonthCalendarUnitforDate:today];

    NSLog(@"%lu,%lu",(unsignedlong)days.length,(unsignedlong)days.location);


   //获取当前时间

    NSDateFormatter *dateFormatter = [[NSDateFormatteralloc] init];

    [dateFormatter setDateFormat:@"yyyy-MM-dd-HH-mm"];

    NSString *currentOlderOneDateStr = [dateFormatterstringFromDate:today];

    MYLog(@"%@",currentOlderOneDateStr);

    NSArray *time = [currentOlderOneDateStr componentsSeparatedByString:@"-"];

    

    //获取时间控件

    NSIndexPath *path = [NSIndexPathindexPathForRow:1inSection:0];

    UITableViewCell *cell = [self.tableViewcellForRowAtIndexPath:path];

    

    if ([day isEqualToString:@"今天"]) {

        //判断小时

        if ([horse integerValue] <[time[3] integerValue]) {

            [selfshowToastHUDView:@"请选择对的日期"afterDelay:2];

            cell.detailTextLabel.text =@"";

            self.postTime =@"";

            return;

        }else if ([horseintegerValue] == [time[3]integerValue] ) {

            

            if ([time[4]integerValue]<30 && ([time[4]integerValue]+30)<=[minuteintegerValue]) {

                MYLog(@"%@,%@",time[4],minute);

                 cell.detailTextLabel.text = [NSStringstringWithFormat:@"%@-%@-%@ %@:%@",time[0],time[1],time[2],horse,minute];

                 self.postTime = [NSStringstringWithFormat:@"%@-%@-%@ %@:%@",time[0],time[1],time[2],horse,minute];

            }else{

             MYLog(@"%@,%@",time[4],minute);

                [selfshowToastHUDView:@"时间间隔太短"afterDelay:2];

                cell.detailTextLabel.text =@"";

                self.postTime =@"";

                return;

            }

        }else{

          cell.detailTextLabel.text = [NSStringstringWithFormat:@"%@-%@-%@ %@:%@",time[0],time[1],time[2],horse,minute];

            self.postTime = [NSStringstringWithFormat:@"%@-%@-%@ %@:%@",time[0],time[1],time[2],horse,minute];

        }

        

       

    

        

    }else if([dayisEqualToString:@"明天"]){

        

        //判断年月日是否有进位

        NSInteger nextDay = [time[2]integerValue];

        NSInteger nextMoth = [time[1]integerValue];

        if (day.length < nextDay+1) {

            NSInteger nextAddOne = nextMoth +1;

            if (nextAddOne>12) {

                NSInteger years = [time[0]integerValue];

                cell.detailTextLabel.text = [NSStringstringWithFormat:@"%d-%@-%@ %@:%@",(years+1),@"1",@"1",horse,minute];

                self.postTime =[NSStringstringWithFormat:@"%d-%@-%@ %@:%@",(years+1),@"1",@"1",horse,minute];

            }else{

            cell.detailTextLabel.text = [NSStringstringWithFormat:@"%@-%ld-%@ %@:%@",time[0],(long)nextAddOne,@"1",horse,minute];

                self.postTime = [NSStringstringWithFormat:@"%@-%ld-%@ %@:%@",time[0],(long)nextAddOne,@"1",horse,minute];

            }

        }else{

            NSInteger day =[time[2]integerValue];

            cell.detailTextLabel.text =  [NSStringstringWithFormat:@"%@-%@-%d %@:%@",time[0],time[1],(day+1),horse,minute];

            self.postTime = [NSStringstringWithFormat:@"%@-%@-%ld %@:%@",time[0],time[1],(day+1),horse,minute];

        }

   

        

    }else if([dayisEqualToString:@"后天"]){

    

        //判断年月日是否有进位

        NSInteger nextDay = [time[2]integerValue];

        NSInteger nextMoth = [time[1]integerValue];

        if ((day.length < nextDay+2)&&day.length != nextDay) {

            NSInteger nextAddOne = nextMoth +1;

            if (nextAddOne>12) {

                

                NSInteger years = [time[0]integerValue];

                cell.detailTextLabel.text = [NSStringstringWithFormat:@"%d-%@-%@ %@:%@",(years+1),@"1",@"1",horse,minute];

                self.postTime =[NSStringstringWithFormat:@"%d-%@-%@ %@:%@",(years+1),@"1",@"1",horse,minute];

            }else{

                cell.detailTextLabel.text = [NSStringstringWithFormat:@"%@-%ld-%@ %@:%@",time[0],(long)nextAddOne,@"1",horse,minute];

                self.postTime = [NSStringstringWithFormat:@"%@-%ld-%@ %@:%@",time[0],(long)nextAddOne,@"1",horse,minute];

            }

        }else{

            NSInteger day =[time[2]integerValue];

            cell.detailTextLabel.text =  [NSStringstringWithFormat:@"%@-%@-%d %@:%@",time[0],time[1],(day+2),horse,minute];

            self.postTime = [NSStringstringWithFormat:@"%@-%@-%d %@:%@",time[0],time[1],(day+2),horse,minute];

        }

        

        if ((day.length < nextDay+2)&&day.length == nextDay) {

            NSInteger nextAddOne = nextMoth +1;

            if (nextAddOne>12) {

                

                NSInteger years = [time[0]integerValue];

                cell.detailTextLabel.text = [NSStringstringWithFormat:@"%d-%@-%@ %@:%@",(years+1),@"1",@"2",horse,minute];

                self.postTime = [NSStringstringWithFormat:@"%d-%@-%@ %@:%@",(years+1),@"1",@"2",horse,minute];

            }else{

                cell.detailTextLabel.text = [NSStringstringWithFormat:@"%@-%ld-%@ %@:%@",time[0],(long)nextAddOne,@"2",horse,minute];

                self.postTime = [NSStringstringWithFormat:@"%@-%ld-%@ %@:%@",time[0],(long)nextAddOne,@"2",horse,minute];

            }

        }else{

            NSInteger day =[time[2]integerValue];

            cell.detailTextLabel.text =  [NSStringstringWithFormat:@"%@-%@-%d %@:%@",time[0],time[1],(day+2),horse,minute];

            self.postTime =  [NSStringstringWithFormat:@"%@-%@-%d %@:%@",time[0],time[1],(day+2),horse,minute];

        }


        

        

    }

}

0 0
原创粉丝点击