#import <UIKit/UIKit.h>
#import <objc/runtime.h> @protocol datePickerViewDelegate <NSObject> -(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<datePickerViewDelegate>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<UITouch *> *)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];

UIDatePicker封装的更多相关文章

  1. 自定义一个只显示年月的DatePicker(UIDatePicker无法实现年月显示)

    HooDatePicker 介绍(introduction) ==================================================项目需要一个DatePicker,只显 ...

  2. iOS开发--UIDatePicker

    UIDatePicker 是一个控制器类,封装了 UIPickerView,但是他是UIControl的子类,专门用于接受日期.时间和持续时长的输入.日期选取器的各列会按照指定的风格进行自动配置,这样 ...

  3. UIDatePicker 日期/时间选取器(滚轮)—IOS开发

    UIDatePicker 是一个控制器类,封装了 UIPickerView,但是他是UIControl的子类,专门用于接受日期.时间和持续时长的输入.日期选取器的各列会按照指定的风格进行自动配置,这样 ...

  4. IOS开发—UIDatePicker 日期/时间选取器(滚轮)

    UIDatePicker 是一个控制器类,封装了 UIPickerView,但是他是UIControl的子类,专门用于接受日期.时间和持续时长的输入.日期选取器的各列会按照指定的风格进行自动配置,这样 ...

  5. iOS开发——高级UI之OC篇&UIdatePicker&UIPickerView简单使用

    UIdatePicker&UIPickerView简单使用 /***************************************************************** ...

  6. IOS中UIDatePicker

    UIDatePicker 1.常见属性 /* 样式 UIDatePickerModeTime,时间 UIDatePickerModeDate,日期 UIDatePickerModeDateAndTim ...

  7. iOS基础 - UIDatePicker and UIPickerView and UITextField

    1.UIDatePicker继承自UIControl,因此不会通过代理来监听事件的改变,而是通过addTarget来监听事件.监听的事件是值改变事件. 2.UIPickerView继承自UIView, ...

  8. UIDatePicker的使用

    UIDatePicker的介绍 UIDatePicker这个类的对象让用户可以在多个车轮上选择日期和时间.iPhone手机上的‘时钟’应用程序中的时间与闹铃中便使用了该控件.使用这个控件时,如果你能配 ...

  9. 【IOS 开发】基本 UI 控件详解 (UIDatePicker | UIPickerView | UIStepper | UIWebView | UIToolBar )

    转载注明出处 : http://blog.csdn.net/shulianghan/article/details/50348982 一. 日期选择器 (UIDatePicker) UIDatePic ...

随机推荐

  1. js 异步请求

    <p id="check"> <label>验证码:</label> <input class="vid" id=&q ...

  2. Rest风格理解

    之前一直不理解restful风格,今天终于理解了些(20170527) 正常我们在浏览器的地址栏中输入的地址很多都是发起的,发起的都是get请求 通过ajax可以设置put请求,F12查看浏览器请求头 ...

  3. sklearn数据预处理

    一.standardization 之所以标准化的原因是,如果数据集中的某个特征的取值不服从标准的正太分布,则性能就会变得很差 ①函数scale提供了快速和简单的方法在单个数组形式的数据集上来执行标准 ...

  4. 国内常用NTP服务器地址及

    210.72.145.44 (国家授时中心服务器IP地址) 133.100.11.8 日本 福冈大学 time-a.nist.gov 129.6.15.28 NIST, Gaithersburg, M ...

  5. python中的 set 中的元素

    set存储的元素和dict的key类似,必须是不变对象,因此,任何可变对象是不能放入set中的.

  6. 【react】---styled-components的基本使用---【巷子】

    一.官网地址 https://www.styled-components.com/ 二.styled-components 1.styled-components 样式化组件,主要作用是它可以编写实际 ...

  7. python中的细节

    # 1 # li = ['a', 'b', 'c', 'd','e'] # print(li[10:]) #[] 不报错 # 2 # 这不是True或False,而是值 # 另外,优先级 not &g ...

  8. VC++、Win32 SDK、MFC的区别

    这是一个初进行开发人员都可能遇到过的概念不清的问题,自己当年也同样有过误解,做技术我感觉一定要专,但是,不代表毫不关心相关的知识,至少概念层次上要知道,所以,这里还是再把这些内容纪录下来,好记性不如烂 ...

  9. WPF datagrid 获取行或单格为NULL 问题

    datagrid  属性 EnableRowVirtualization 设置为 false 解决...不要问我为什么. 害死我了

  10. .NET Core开发日志——Startup

    一个典型的ASP.NET Core应用程序会包含Program与Startup两个文件.Program类中有应用程序的入口方法Main,其中的处理逻辑通常是创建一个WebHostBuilder,再生成 ...