封装UIDatePicker,日期选择器

原创 2016年08月30日 21:40:23

在做日期选择中经常会用到UIDatePicker这个控件,在此简单封装了下
.h文件中

import

import “RMDateView.h”

CGFloat const kButtonHeightInDateView = 30;
CGFloat const kButtonwidthInDateView = 50;
CGFloat const kPickViewBackViewInDateView = 300;
@interface RMDateView ()
{
UIView *_backView;
}
@property (nonatomic, strong)UIDatePicker *datePicker;
@end
@implementation RMDateView

  • (instancetype)init
    {
    return [self initWithFrame:CGRectMake(0, 0, kScreenWidth, kScreenHeight) datePickerMode:UIDatePickerModeDate];
    }

  • (instancetype)initWithFrame:(CGRect)frame
    datePickerMode:(UIDatePickerMode)datePickerMode
    {
    self = [super initWithFrame:frame];
    if (self) {
    self.backgroundColor = [UIColor colorWithWhite:0.93 alpha:0.5];
    [self createViewWithdatePickerMode:datePickerMode];
    }
    return self;
    }

  • (void)createViewWithdatePickerMode:(UIDatePickerMode)datePickerMode
    {

    _backView = [[UIView alloc] initWithFrame:CGRectMake(0, kScreenHeight, kScreenWidth, kButtonHeightInDateView)];
    _backView.backgroundColor = [UIColor colorWithWhite:0.904 alpha:1.000];
    [self addSubview:_backView];

    // 取消
    UIButton *cancelButton = [RMUtils buttonWith:CGRectMake(0, 0, kButtonwidthInDateView, kButtonHeightInDateView) text:@”取消” backColor:[UIColor clearColor] textColor:RGB(100, 100, 100) tag:RMDateViewTagCancel];

    [cancelButton addTarget:self action:@selector(buttonAction:) forControlEvents:UIControlEventTouchUpInside];
    [_backView addSubview:cancelButton];

    // 确定
    UIButton *confirmButton = [RMUtils buttonWith:CGRectMake(kScreenWidth - kButtonwidthInDateView,0, kButtonwidthInDateView, kButtonHeightInDateView) text:@”确定” backColor:[UIColor clearColor] textColor:RGB(100, 100, 100) tag:RMDateViewTagCofirm];
    [confirmButton addTarget:self action:@selector(buttonAction:) forControlEvents:UIControlEventTouchUpInside];
    [_backView addSubview:confirmButton];

    self.datePicker = [[UIDatePicker alloc] initWithFrame:CGRectMake(0, CGRectGetMaxY(_backView.frame), kScreenWidth, 216)];
    self.datePicker.backgroundColor = [UIColor whiteColor];
    self.datePicker.datePickerMode = datePickerMode;
    [self addSubview:self.datePicker];

    [self.datePicker addTarget:self action:@selector(dateChanged:) forControlEvents:UIControlEventValueChanged];

    UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapGesture:)];
    [self addGestureRecognizer:tapGestureRecognizer];
    }

  • (void)setMaximumDate:(NSDate *)maximumDate
    {
    _maximumDate = maximumDate;
    self.datePicker.maximumDate = maximumDate;
    }

  • (void)buttonAction:(UIButton *)button
    {
    if ([_delegate respondsToSelector:@selector(RMDateView:dateViewTag:)]) {
    [self.delegate RMDateView:self dateViewTag:button.tag];
    }
    }

  • (void)tapGesture:(UIGestureRecognizer *)tap
    {
    [self endAnimationComplete:^{
    [self removeFromSuperview];
    }];
    }

  • (void)dateChanged:(UIDatePicker *)datePicker
    {
    if ([_delegate respondsToSelector:@selector(RMDateView:datePicker:)]) {
    [self.delegate RMDateView:self datePicker:datePicker];
    }

}

  • (void)startAnimation
    {
    [UIView animateWithDuration:0.3 animations:^{
    _backView.y = kScreenHeight - kPickViewBackViewInDateView;
    _datePicker.y = CGRectGetMaxY(_backView.frame);
    }];
    }

  • (void)endAnimationComplete:(void (^)())complete
    {
    [UIView animateWithDuration:0.3 animations:^{
    _backView.y = kScreenHeight;
    _datePicker.y = CGRectGetMaxY(_backView.frame);
    } completion:^(BOOL finished) {
    complete();
    }];
    }
    @end

简单的封了下,记录下,也便于下次更改,查阅
调用方法(可以直接类似正常的view一样直接add,也可以添加到window上,这里举添加window方式)
- (void)initDateView{
_dateView = [[RMDateView alloc] initWithFrame:CGRectMake(0, 0, kScreenWidth, kScreenHeight)
datePickerMode:UIDatePickerModeDate];
_dateView.maximumDate = [NSDate date];
_dateView.delegate = self;
[_showView addSubview:_dateView];
[_dateView startAnimation];
}

pragma mark - RMDateDelegate

  • (void)RMDateView:(RMDateView *)view dateViewTag:(NSInteger)tag
    {
    switch (tag) {
    case RMDateViewTagCofirm:
    RMLog(@”确定”);
    [_dateView endAnimationComplete:^{
    [_dateView removeFromSuperview];
    }];
    break;
    case RMDateViewTagCancel:
    {
    RMLog(@”取消”);
    [_dateView endAnimationComplete:^{
    [_dateView removeFromSuperview];
    }];
    }
    break;
    default:
    break;
    }
    }

直接封装成了静态库,并删去了一下不必要操作
下载地址:
http://download.csdn.net/detail/sinat_28585351/9624078

版权声明:本文为博主原创文章,未经博主允许不得转载。

iOS 时间选择器封装(含三种模式)

#import typedef enum : NSUInteger {     DatePickerViewDateTimeMode,//年月日,时分     Date...
  • walkerwqp
  • walkerwqp
  • 2017年12月22日 17:24
  • 129

iOS开发 选择日期的view 一(UIDatePicker的封装)

之前写了个基于类簇的自定义选择日期的view的封装,现在看看,感觉代码挺操蛋的,还是抽出来,只显示UIDatePicker的封装吧 // // XGChoseDateView.h // XGDev...
  • syg90178aw
  • syg90178aw
  • 2016年08月31日 14:13
  • 2248

IOS 日期选择器 UIDatePicker的使用

在这 我会给大家分享一个自己写的小程序,详细介绍它的使用...   如图:    最上面的 其实是一行cell       左边 起始时间 为标题label  ,右边的22:37 为副标题 lab...
  • qq_32510691
  • qq_32510691
  • 2016年03月06日 01:30
  • 2455

封装UIDatePicker,日期选择器

在做日期选择中经常会用到UIDatePicker这个控件,在此简单封装了下 .h文件中import import “RMDateView.h”CGFloat const kButtonHeightI...
  • sinat_28585351
  • sinat_28585351
  • 2016年08月30日 21:40
  • 465

iOS 开发时间选择器datePicker

-(void)timeSearch{ //time search self.dateView = [[UIView alloc]initWithFrame:CGRectMake(0...
  • Cai_guange1226
  • Cai_guange1226
  • 2016年03月04日 11:05
  • 4439

用UIPikerView封装自己的UIDatePicker

首先我们为什么要用UIPickerView封装DatePicker哪? 是因为DatePicker是无法自定制的,只能使用系统提供的哪几种样式,所以我们需要自定制在这里我们只是最简单的封装,如果...
  • qq_16437739
  • qq_16437739
  • 2016年02月19日 09:56
  • 1417

日期选择器(年月日)(使用UIDatePicker实现)

UIDatePicker *datePicker=[[UIDatePicker alloc] init];     datePicker.frame=CGRectMake(0, [UIScreen...
  • zhanglizhi111
  • zhanglizhi111
  • 2017年05月11日 17:19
  • 873

iOS通过pickerView自定义简单的时间选择器

/** 初始化pickerView */ -(void)initPickerView { int x_hour = 50; int height_hour = 120; ...
  • cjh16102377
  • cjh16102377
  • 2015年08月11日 15:06
  • 3135

iOS 自定义日期选择器

前言封装了一个日期选择器,解决两个问题: 1、点击textField,键盘弹出和日期选择器弹出的逻辑处理; 2、同一个界面需要多次用到日期选择器时,判断点击的textField;一、封装日期选择器...
  • u010545480
  • u010545480
  • 2016年01月18日 16:18
  • 547

UIDatePicker - 日期选择器

UIDatePicker - 日期选择器继承关系 NSObject ->UIResponder -> UIView ->UIControl -> UIDatePicker 概述UIDatePi...
  • go_fishing
  • go_fishing
  • 2016年03月28日 11:20
  • 894
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:封装UIDatePicker,日期选择器
举报原因:
原因补充:

(最多只允许输入30个字)