#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. Dedecms5.7搜索结果页空白无内容的解决方法

    Dedecms5.7搜索结果页空白.没有内容的解决方法 许多网友在修改dedecms5.7版本的搜索功能时搜索空白的解决方法,正解如下: 系统设置—>其他选项—->是否启用文章全文检索功能 ...

  2. 设计模式,python延迟计算缓存模式

    之前已经发过单独的缓存,这也算一种模式. from __future__ import print_function import functools class lazy_property(obje ...

  3. nodejs小问题拾遗

    1.npm WARN saveError ENOENT: no such file or directory, open 'C:\Users\Root\package.json' cd 切换到D:\n ...

  4. LostRoutes项目日志——敌人精灵Enemy解析

    Enemy类在Enemy.js中,类Enemy类继承自PhysicsSprite,以便于可以使用物理引擎中的一些特性. 原版的Enemy.js: var Enemy = cc.PhysicsSprit ...

  5. 【消灭代办】第2周 - 数组判断、开发工具、transform:matrix、Grid

    2018.11.19代办一:[数组判断] 代办描述: 怎么判断一个数组是数组呢?其实这个也是一个常考的题目 关键考点: 1.js中对象类型判断的几种方法 2.数组的知识和灵活运用 解决方案s: 篇幅过 ...

  6. 解决Maven build 慢的问题

    extends:http://www.cnblogs.com/gmq-sh/p/4742698.html ,http://www.cnblogs.com/rainy-shurun/p/5726758. ...

  7. 7.17python

    1.事件: # !/usr/bin/env python # !--*--coding:utf-8 --*-- # !@Time :2018/7/17 10:38 # !@Author TrueNew ...

  8. 自定义元素 v1:可重用网络组件

    google文档 https://developers.google.cn/web/fundamentals/web-components/customelements 兼容性 https://can ...

  9. Docker Compose一键部署Nginx反向代理Tomcat集群

    目录结构如下 mysql/conf/my.cnf [mysqld] user=mysql port=3306 datadir=/var/lib/mysql socket=/var/lib/mysql/ ...

  10. MPD软件工作坊上海站本周末在上海举行

    本周末(5月26日至27日)由麦思博(msup)主办的第39届MPD软件工作坊即将在上海虹桥会议中心举行.本届MPD将继续围绕软件研发领域,邀请了21位技术大咖,从产品运营.团队管理.架构技术.自动化 ...