文档章节

自定义一个日期选择器

默默沫沫shine
 默默沫沫shine
发布于 2016/05/23 13:29
字数 824
阅读 6
收藏 0

#import <UIKit/UIKit.h>

 

@interface DataPickerView : UIView

 

@property (nonatomic,copy) void(^callMeRemove)();

 

@end

 

 

 

#import "DataPickerView.h"

 

@interface DataPickerView ()<UIPickerViewDataSource,UIPickerViewDelegate>

 

@property (nonatomic) UIPickerView   *pickView;

 

@property (nonatomic) UIView         *backdropView;

 

@property (nonatomic) NSMutableArray *pickerDataAray;

 

@property (nonatomic) UITableView    *tableView;

 

@property (nonatomic) NSMutableArray *years;

 

@property (nonatomic) NSMutableArray *mounths;

 

@property (nonatomic) NSMutableArray *dayes;

 

@property (nonatomic) NSInteger      whereYear;

 

@property (nonatomic) NSInteger      whereMouth;

 

@property (nonatomic) NSArray        *nibArray;

 

@property (nonatomic) NSInteger      page;

 

@property (nonatomic) NSInteger      numsOfPeople;

 

@property (nonatomic) NSString       *dicOfYear;

 

@property (nonatomic) NSString       *dicOfMouth;

 

@property (nonatomic) NSString       *dicOfDays;

 

@property (nonatomic) UIView         *bearView;

 

@property (nonatomic) NSInteger      tagOfTimeLabel;

 

@property (nonatomic) NSInteger      oldTimeBtnTag;

 

@end

 

 

@implementation DataPickerView

 

-(id)initWithFrame:(CGRect)frame

{

    if (self  = [super initWithFrame:frame]) {

        [self creatPickerView];

    }

    

    return self;

}

 

-(void)creatPickerView

{

 

    

    self.dicOfYear  = [Date_String  substringWithRange:NSMakeRange(0, 4)];

    self.dicOfMouth = [Date_String  substringWithRange:NSMakeRange(5, 2)];

    self.dicOfDays  = [Date_String  substringWithRange:NSMakeRange(8, 2)];

    self.whereYear  = [[Date_String substringWithRange:NSMakeRange(0, 4)] integerValue];

    self.years      = [NSMutableArray array];

    self.mounths    = [NSMutableArray array];

    self.dayes      = [NSMutableArray array];

    self.whereMouth = [[Date_String substringWithRange:NSMakeRange(5, 2)] integerValue];

    //日期选择器

    self.backdropView = [[UIView alloc] initWithFrame:self.bounds];

    self.backdropView.backgroundColor = [UIColor colorWithWhite:0.7 alpha:0.4];

    [self addSubview:self.backdropView];

    

    

    self.bearView = [[UIView alloc]initWithFrame:CGRectMake(30, 0, SCREEN_WIDTH-60, 320)];

    self.bearView.center = self.center;

    self.bearView.backgroundColor = WHITE_COLOR;

    [self.backdropView addSubview:self.bearView];

    

    [self getDatePickerData];

    

    NSArray *selectedNum = @[[Date_String substringWithRange:NSMakeRange(0 , 4)],[Date_String substringWithRange:NSMakeRange(5, 2)],[Date_String substringWithRange:NSMakeRange(8, 2)]];

    

    for (int index = 0; index<=2; index++) {

        self.pickView = [[UIPickerView alloc]initWithFrame:CGRectMake((SCREEN_WIDTH-60)*index/3, 130, (SCREEN_WIDTH-60)/3, 120)];

        

        self.pickView.backgroundColor = [UIColor colorWithWhite:0.95 alpha:0.3];

        self.pickView.delegate =self;

        self.pickView.dataSource = self;

        self.pickView.tag = 100+index;

        //_rowA = [selectedNum[index] integerValue]-1;

        if (index) {

            [self.pickView selectRow:[selectedNum[index] integerValue]-1 inComponent:0 animated:YES];

        }else{

            [self.pickView selectRow:30 inComponent:0 animated:YES];

        }

        [self.bearView addSubview:self.pickView];

        

    }

    

    UIButton *button = [[UIButton alloc]initWithFrame:CGRectMake(20, 240+30, SCREEN_WIDTH-60-40, 30)];

    [button setTitleColor:WHITE_COLOR forState:UIControlStateNormal];

    [button setTitle:@"确定" forState:UIControlStateNormal];

    [button addTarget:self action:@selector(makeSureHowTimes) forControlEvents:UIControlEventTouchUpInside];

    

    

    [button setBackgroundImage:[UIImage imageWithContentsOfFile:The_path_Resource(@"Button")] forState:UIControlStateNormal];

    button.layer.cornerRadius = 7.5;

    [self.bearView addSubview:button];

    

    UIImageView *diseIV = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH-60, 110)];

    diseIV.image = [UIImage imageWithContentsOfFile:The_path_Resource(@"dise")];

    diseIV.userInteractionEnabled = YES;

    [self.bearView addSubview:diseIV];

    

    UIImageView *clockIV = [[UIImageView alloc]initWithFrame:CGRectMake((SCREEN_WIDTH-60)-90*285/226, 20, 90*285/226, 90)];

    clockIV.image = [UIImage imageWithContentsOfFile:The_path_Resource(@"Clock")];

    clockIV.userInteractionEnabled = YES;

    [self.bearView addSubview:clockIV];

    

    

    UILabel *lable = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH-60, 30)];

    lable.backgroundColor =[UIColor clearColor];

    lable.text = @"自选天数";

    lable.center = CGPointMake((SCREEN_WIDTH-60)/2, 25);

    lable.textColor = WHITE_COLOR;

    lable.textAlignment = NSTextAlignmentCenter;

    [self.bearView addSubview:lable];

    

    

    NSArray *placeHloders = @[@"点击选择开始日期",@"点击选择结束日期"];

    for (int index = 0; index <= 1; index++) {

        UIButton *timeLable = [[UIButton alloc]initWithFrame:CGRectMake(35, 50+30*index, SCREEN_WIDTH-130, 25)];

        timeLable.backgroundColor =[UIColor clearColor];

        [timeLable setTitle:placeHloders[index] forState:UIControlStateNormal];

        timeLable.titleLabel.tintColor = WHITE_COLOR;

        timeLable.layer.borderWidth = 1;

        timeLable.layer.borderColor = WHITE_COLOR.CGColor;

        timeLable.tag = 600+index;

        timeLable.titleLabel.textAlignment = NSTextAlignmentCenter;

        [timeLable addTarget:self action:@selector(makeSureWhichLabelTime:) forControlEvents:UIControlEventTouchUpInside];

        [self.bearView addSubview:timeLable];

    }

    

    

}

 

-(void)getDatePickerData

{

    NSString *stringDate = [NSString stringWithFormat:@"%@",[NSDate date]];

    int a = [[stringDate substringToIndex:4] intValue];

    

    for (int index = a-30; index<=a+30; index++) {

        [self.years addObject:[NSString stringWithFormat:@"%d",index]];

    }

    

    int index =1;

    while (index<=12) {

        [self.mounths addObject:[NSString stringWithFormat:@"%d",index]];

        index++;

    }

    

    for (int day = 1; day <= 31; day++) {

        [self.dayes addObject:[NSString stringWithFormat:@"%d",day]];

    }

    

    

}

 

#pragma mark - 日期选择器代理实现方法 -

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView

{

    return 1;

}

 

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

{

    

    switch (pickerView.tag) {

        case 100:

        {

            return self.years.count;

        }

            break;

        case 101:

        {

            return 12;

        }

            break;

            

        default:{

            

            NSInteger mounth = self.whereMouth;

            if (mounth==1||mounth==3||mounth==5||mounth==7||mounth==8||mounth==10||mounth==12) {

                

                return 31;

                

            }else if(mounth==2){

                NSInteger year =self.whereYear;

                if((year%4==0&&year%100!=0)||(year%400==0)) {

                    

                    return 29;

                    

                }else{

                    

                    return 28;

                    

                }

            }else{

                

                return 30;

                

            }

            

        }

            break;

    }

    

}

 

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

{

    switch (pickerView.tag) {

        case 100:

        {

            return [NSString stringWithFormat:@"%@年",self.years[row]];

        }

            break;

        case 101:

        {

            return [NSString stringWithFormat:@"%@月",self.mounths[row]];

        }

            break;

            

        default:{

            

            return [NSString stringWithFormat:@"%@日",self.dayes[row]];

            

        }

            break;

    }

}

 

- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view

{

    UILabel* pickerLabel = (UILabel*)view;

    if (!pickerLabel){

        pickerLabel = [[UILabel alloc] init];

        pickerLabel.adjustsFontSizeToFitWidth = YES;

        pickerLabel.textAlignment = NSTextAlignmentCenter;

        [pickerLabel setBackgroundColor:[UIColor clearColor]];

        pickerLabel.tag = 444;

        [pickerLabel setFont:[UIFont boldSystemFontOfSize:17]];

        

    }

    pickerLabel.text=[self pickerView:pickerView titleForRow:row forComponent:component];

    return pickerLabel;

}

 

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

{

    

    

    switch (pickerView.tag) {

        case 100:

        {

            self.whereYear =[self.years[row] integerValue];

            self.dicOfYear = self.years[row];

            

        }

            break;

        case 101:

        {

            self.whereMouth = row+1;

            self.dicOfMouth = [NSString stringWithFormat:@"%.2ld",row+1];

            

        }

            break;

            

        default:{

            NSString *str = [NSString stringWithFormat:@"%.2ld",row+1];

            self.dicOfDays = str;

            

        }

            

            

            break;

    }

    

    NSArray *textArr = @[self.dicOfYear,self.dicOfMouth,self.dicOfDays];

    

    if (self.tagOfTimeLabel==600) {

        UIButton *button = [self.bearView viewWithTag:600];

        [button setTitle:[textArr componentsJoinedByString:@"-"] forState:UIControlStateNormal];

        [OrderInstance sharedInstance].model.card_valid_date = [textArr componentsJoinedByString:@"-"];

        

    }else if(self.tagOfTimeLabel==601){

        UIButton *button = [self.bearView viewWithTag:601];

        [button setTitle:[textArr componentsJoinedByString:@"-"] forState:UIControlStateNormal];

        [OrderInstance sharedInstance].model.card_exp_date = [textArr componentsJoinedByString:@"-"];

        

       

    }

    

    

    [self.pickView reloadAllComponents];

    

}

 

-(void)makeSureWhichLabelTime:(UIButton *)button

{

    UIButton *btn = [self.bearView viewWithTag:self.oldTimeBtnTag];

    btn.layer.borderWidth = 1;

    button.layer.borderWidth = 3;

    self.tagOfTimeLabel = button.tag;

    self.oldTimeBtnTag = button.tag;

}

-(void)makeSureHowTimes

{

 

    

    if (_callMeRemove) {

        

        self.callMeRemove();

        

    }

    

}

 

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

{

    if (_callMeRemove) {

        

        self.callMeRemove();

        

    }

}

 

© 著作权归作者所有

共有 人打赏支持
默默沫沫shine
粉丝 0
博文 15
码字总数 4174
作品 0
朝阳
程序员
私信 提问
9个有用的jQuery日历和网页设计师的日期选择器插件

事件日历和日期选择器是是我们开发当中经常遇到的问题,这个时候我们就需要用jquery插件来实现,昨天我在做项目的时候,遇到了个问题就是如何显示倒计时问题,我这个时候就用jquery插件解决的...

未来十年
2012/01/02
0
0
layDate 5.0 正式版发布,独立清爽的日期与时间组件

layDate 是 layui 独立维护的三大组件之一(即该版本可独立使用,无需采用 layui),最早发布于2014年6月,但当时只迭代了一个版本,就再也没有更新。而现在,我们对其进行了一次全面的重写,...

贤心
2017/08/25
2.9K
12
andorid择器类库,包括日期及时间选择器性别、职业、学历、星座等

andorid择器类库,包括日期及时间选择器性别、职业、学历、星座等 安度博客 » 安度博客2017-05-1827 阅读 Andorid时间星座日期选择器 描述: 安卓选择器类库,包括日期及时间选择器(可设置...

安度博客 » 安度博客
2017/05/18
0
0
MWDatePicker

MWDatePicker 是一个用于替代 UIDatePicker 的日期选择器控件,支持自定义北京和选择器样式。 要求: iOS 6.0 或者更新版本 ARC

红薯
2013/06/25
744
1
jquery公用web功能组件--GRI

从GRI(Ghost Rider Igniter)应用php开发框架中提取出的公用web功能组件,包括列表,图,日期,月份选择器,上传等。微信公众平台用到 文件列表 jQuery.min.js 官方jQuery v1.7.2版本 gri....

欢哥
2013/10/23
2.1K
0

没有更多内容

加载失败,请刷新页面

加载更多

自定义 Maven 的 repositories

有时,应用中需要一些比较新的依赖,而这些依赖并没有正式发布,还是处于milestone或者是snapshot阶段,并不能从中央仓库或者镜像站上下载到。此时,就需要 自定义Maven的<repositories>。 ...

waylau
32分钟前
1
0
徒手写一个es6代码库

mkdir democd demonpm initnpm install -g babelnpm install -g babel-clinpm install --save-dev babel-preset-es2015-node5 在项目目录创建两个文件夹 functional-playground ......

lilugirl
32分钟前
2
0
linux定位应用问题的一些常用命令,特别针对内存和线程分析的dump命令

1.jps找出进程号,找到对应的进程号后面才好继续操作 2.linux查看进程详细信息 ps -ef | grep 进程ID 3. dump内存信息 Jmap -dump:format=b,file=YYMMddhhmm.dump pid 4.top查看cpu占用信息 ...

noob_chr
32分钟前
1
0
Android TV开发-按键焦点

写在前面 按键焦点过程了解 2.1 dispatchKeyEvent 过程了解 2.2 焦点查找请求过程了解 1.2.1 第一次获取焦点 1.2.3 按键焦点 焦点控制 焦点记忆 应用场景 参考资料 [TOC] 1. 写在前面 工...

冰雪情缘l
32分钟前
1
0
java框架学习日志-3

这章主要是补充一些ioc创建对象的方式,ioc容器在写好<bean></bean>的时候就已经创建对象了。在之前的例子中,一直都是无参的构造方法。下面给出有参的构造方法的对象的创建,没有什么难点重...

白话
35分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部