文档章节

自定义一个日期选择器

默默沫沫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.8K
11
给开发者准备的 10 款最好的 jQuery 日历插件

这篇文章介绍的是 10 款最棒而且又很有用的 jQuery日历插件,允许开发者们把这些漂亮的日历插件结合到自己的网站中。这些日历插件易用性都很强,轻轻松松的就可以把漂亮的日历插件装饰到你的...

oschina
2014/01/27
47.1K
10
andorid择器类库,包括日期及时间选择器性别、职业、学历、星座等

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

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

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

红薯
2013/06/25
744
1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

vue+element-ui操作删除(单行和批量删除)

页面展示: <template><!-- 表格内容 --><el-table :data="packData" border style="width: 100%" ref="multipleTable" @selection-change="handleSelectionChange"><el-tab......

琴妹
11分钟前
0
0
基于vue(element ui) + ssm + shiro 的权限框架

zhcc 基于vue(element ui) + ssm + shiro 的权限框架 引言 心声 现在的Java世界,各种资源很丰富,不得不说,从分布式,服务化,orm,再到前端控制,权限等等玲琅满目,网上有句话说,语言框架...

DarrenHu_吴邪
18分钟前
1
1
数据库水平切分(MyCat分片)

范围分片 io.mycat.route.function.AutoPartitionByLong 自动范围分片 Function名称:rang-long(配置文件默认) 枚举分片 io.mycat.route.function.PartitionByFileMap 枚举分片 Funtion名称...

这很耳东先生
19分钟前
0
0
读《HeadFirst设计模式》笔记之外观模式

外观模式:提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。 举个栗子: 建了一个家庭影院,但是每次享受家庭影院时,你发现需要执行 将灯...

suyain
20分钟前
0
0
MongoDB分片配置

简单注解: mongos 路由进程, 应用程序接入mongos再查询到具体分片,监听端口默认27017 config server 路由表服务, 每一台都具有全部chunk的路由信息 shard为数据存储分片, 每一片都可以是...

LUIS1983
28分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部