博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UIDatePicker封装
阅读量:4626 次
发布时间:2019-06-09

本文共 5912 字,大约阅读时间需要 19 分钟。

 

 

#import 
#import
@protocol datePickerViewDelegate
-(void)datePickerViewChoseTime:(NSString *)timeStr;@end@interface DatePickerView : UIView@property(nonatomic,strong)UIDatePicker *datePicker;@property(nonatomic,strong)UILabel *datePickerTimeLab;@property(nonatomic,strong)NSDate *selectDate;@property(nonatomic,assign)id
delegate;@property(nonatomic,copy)void(^hideBlock)();// 隐藏时调用的block-(void)showDatePickerView;-(void)dismissDatePickerView;@end

 

#import "DatePickerView.h"@interface DatePickerView (){    UIView *backView;}@end@implementation DatePickerView-(instancetype)initWithFrame:(CGRect)frame{    self = [super initWithFrame:CGRectMake(0, 0, MAINSCROON_WIDTH, MAINSCROON_HEIGHT)];    if(self){        backView = [UIView new];        [self addSubview:backView];        backView.backgroundColor = [UIColor blackColor];        backView.alpha = 0.25;        [backView mas_makeConstraints:^(MASConstraintMaker *make) {            make.size.equalTo(self);            make.top.offset(0);            make.left.offset(0);        }];        self.datePicker = [UIDatePicker new];        NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"zh_CN"];//设置为中        self.datePicker.locale = locale;        self.datePicker.backgroundColor = [UIColor whiteColor];        [self.datePicker setDatePickerMode:UIDatePickerModeDate];        [self.datePicker addTarget:self action:@selector(dataValueChanged:) forControlEvents:UIControlEventValueChanged];        [self addSubview:self.datePicker];        [self.datePicker mas_makeConstraints:^(MASConstraintMaker *make) {            make.centerX.equalTo(self.mas_centerX);            make.bottom.offset(-(BOTTOM_HEIGHT));            if([UIScreen mainScreen].bounds.size.width >= 720){                make.height.offset(320);            }else{                make.height.offset(180);            }            make.width.equalTo(self.mas_width);        }];                UIView *topView = [UIView new];        topView.backgroundColor = [UIColor whiteColor];        [self addSubview:topView];        [CreateUI addFrameWithBottomView:topView borderHeight:1.0f withBorderColor:BORDER_COLOR];        [topView mas_makeConstraints:^(MASConstraintMaker *make) {            make.bottom.equalTo(self.datePicker.mas_top).offset(0);            make.width.equalTo(self.datePicker.mas_width);            make.height.offset(34);            make.left.offset(0);        }];        UILabel *choseLab = [UILabel new];        choseLab.text = @"选择时间:";        choseLab.font = [UIFont systemFontOfSize:14];        [topView addSubview:choseLab];        [choseLab mas_makeConstraints:^(MASConstraintMaker *make) {            make.centerY.equalTo(topView.mas_centerY);            make.left.offset(5);        }];                self.datePickerTimeLab = [UILabel new];        self.datePickerTimeLab.font = [UIFont systemFontOfSize:14];        [self dataValueChanged:self.datePicker];        [topView addSubview:self.datePickerTimeLab];        [self.datePickerTimeLab mas_makeConstraints:^(MASConstraintMaker *make) {            make.centerY.equalTo(topView.mas_centerY);            make.left.equalTo(choseLab.mas_right).offset(5);        }];        UIButton *sureBtn = [UIButton new];        sureBtn.clipsToBounds = YES;        sureBtn.layer.cornerRadius = 17;        [sureBtn setTitle:@"确定" forState:UIControlStateNormal];        [self addSubview:sureBtn];        sureBtn.backgroundColor = [ImageService colorWithHexString:@"#12b7f5"];                [sureBtn mas_makeConstraints:^(MASConstraintMaker *make) {            make.bottom.equalTo(self.datePicker.mas_bottom).offset(-10);            make.centerX.equalTo(self.datePicker.mas_centerX);            make.height.offset(34);            make.width.equalTo(self.datePicker.mas_width).multipliedBy(0.7);        }];        [sureBtn addTarget:self action:@selector(sureTimeBtnClick) forControlEvents:UIControlEventTouchUpInside];    }    return self;}-(void)sureTimeBtnClick{        [_delegate datePickerViewChoseTime:self.datePickerTimeLab.text];        [self dismissDatePickerView];}- (void) dataValueChanged:(UIDatePicker *)sender{    UIDatePicker *dataPicker_one = (UIDatePicker *)sender;    NSDate *date_one = dataPicker_one.date;    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];    [formatter setDateFormat:@"yyyy-MM-dd"];    self.datePickerTimeLab.text = [formatter stringFromDate:date_one];}-(void)setSelectDate:(NSDate *)selectDate{    _selectDate = selectDate;    self.datePicker.date = selectDate;    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];    [formatter setDateFormat:@"yyyy-MM-dd"];    self.datePickerTimeLab.text = [formatter stringFromDate:selectDate];}-(void)touchesBegan:(NSSet
*)touches withEvent:(UIEvent *)event{ [self dismissDatePickerView];}-(void)showDatePickerView{ UIWindow *window = [[[UIApplication sharedApplication]delegate]window]; [window endEditing:YES]; [window addSubview:self]; self.alpha = 0; [UIView animateWithDuration:0.3 animations:^{ self.alpha = 1; }];}-(void)dismissDatePickerView{ if(self.hideBlock){ self.hideBlock(); } UIWindow *window = [[[UIApplication sharedApplication]delegate]window]; [window addSubview:self]; self.alpha = 1; [UIView animateWithDuration:0.3 animations:^{ self.alpha = 0; } completion:^(BOOL finished) { [self removeFromSuperview]; }]; }@end

 

使用:

//懒加载-(DatePickerView *)datePickerView{    if(!_datePickerView){        _datePickerView = [DatePickerView new];        _datePickerView.delegate =self;        _datePickerView.datePicker.minimumDate = [NSDate date];    }    return _datePickerView;}//显示 如果设置默认日期可以这个 [self.datePickerView.datePicker setDate:[NSDate date]]; [self.datePickerView showDatePickerView];

 

转载于:https://www.cnblogs.com/hualuoshuijia/p/9989853.html

你可能感兴趣的文章
实现接口必须要加注解@Override吗
查看>>
apicloud UISearchBar 使用方法
查看>>
【spring+websocket的使用】
查看>>
mongo二维数组操作
查看>>
localStorage之本地储存
查看>>
Archlinux 交换左Ctrl和Cap键
查看>>
#openstack故障处理汇总
查看>>
搜索旋转排序数组 II
查看>>
20、docker swarm
查看>>
psp工具软件前景与范围文档
查看>>
day06-三元表达式
查看>>
C# DateTime.Now详细用法
查看>>
Php中"{}"大括号的用法总结(转)
查看>>
JavaScript内存优化
查看>>
BZOJ1059: [ZJOI2007]矩阵游戏(二分图匹配)
查看>>
P3385 【模板】负环
查看>>
URI、URL 和 URN的区别
查看>>
根据表达式序列(前缀、中缀、后缀)构建表达式树
查看>>
mysql性能优化
查看>>
【SqlServer系列】语法定义符号解析
查看>>