这篇文章主要为大家详细介绍了iOS自定义UIDatePicker日期选择器视图,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
这篇文章主要为大家详细介绍了iOS自定义UIDatePicker日期选择器视图,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
这篇文章主要为大家详细介绍了iOS自定义UIDatePicker日期选择器视图,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
ios自定义uidatepicker日期选择器视图 ,首先看一下效果图:

下面贴上相关代码:
viewcontroller:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
|
#import <uikit/uikit.h> @interface viewcontroller : uiviewcontroller @end #import "viewcontroller.h"#import "hwdatepicker.h" #define mainw [uiscreen mainscreen].bounds.size.width#define mainh [uiscreen mainscreen].bounds.size.height @interface viewcontroller ()<uitextfielddelegate, hwdatepickerdelegate> @property (nonatomic, weak) hwdatepicker *datepicker;@property (nonatomic, strong) uitextfield *datetextfield; @end @implementation viewcontroller - (void)viewdidload { [super viewdidload]; self.view.backgroundcolor = [uicolor blackcolor]; //创建控件 [self creatcontrol];} - (void)creatcontrol{ //textfield _datetextfield = [[uitextfield alloc] initwithframe:cgrectmake(mainw * 0.05, mainw * 0.72, mainw * 0.9, mainw * 0.12)]; _datetextfield.background = [uiimage imagenamed:@"textfieldbj"]; _datetextfield.textalignment = nstextalignmentright; _datetextfield.placeholder = @"请设置日期"; _datetextfield.delegate = self; uilabel *lab2 = [[uilabel alloc] initwithframe:cgrectmake(0, 0, mainw * 0.4, mainw * 0.12)]; lab2.textalignment = nstextalignmentleft; lab2.text = @" 日期"; lab2.textcolor = [uicolor graycolor]; _datetextfield.leftview = lab2; _datetextfield.leftviewmode = uitextfieldviewmodealways; uilabel *lab22 = [[uilabel alloc] initwithframe:cgrectmake(mainw * 0.12 - 15, 0, 15, mainw * 0.12)]; _datetextfield.rightview = lab22; _datetextfield.rightviewmode = uitextfieldviewmodealways; [self.view addsubview:_datetextfield]; //日期选择器 hwdatepicker *datepicker = [[hwdatepicker alloc] initwithframe:cgrectmake(mainw * 0.05, mainh, mainw * 0.9, mainw * 0.5)]; datepicker.delegate = self; [self.view addsubview:datepicker]; self.datepicker = datepicker;} #pragma mark - uitextfielddelegate- (bool)textfieldshouldbeginediting:(uitextfield *)textfield{ if (_datepicker.frame.origin.y != mainh && _datepicker != nil) { [_datepicker dismiss]; return no; }else if (textfield == _datetextfield) { [_datepicker show]; return no; } return yes;} #pragma mark - hwdatepickerdelegate- (void)datepickerview:(hwdatepicker *)datepickerview didclicksurebtnwithselectdate:(nsstring *)date{ _datetextfield.text = date;} @end |
hwdatepicker:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
|
#import <uikit/uikit.h> @class hwdatepicker; @protocol hwdatepickerdelegate <nsobject> /** * hwdatepicker确定按钮点击代理事件 * * @param datepickerview hwdatepicker * @param date 选中的日期 */- (void)datepickerview:(hwdatepicker *)datepickerview didclicksurebtnwithselectdate:(nsstring *)date; @end @interface hwdatepicker : uiview @property (nonatomic, weak) id<hwdatepickerdelegate> delegate; - (void)show;- (void)dismiss; @end #import "hwdatepicker.h" //获得屏幕的宽高#define mainw [uiscreen mainscreen].bounds.size.width#define mainh [uiscreen mainscreen].bounds.size.height @interface hwdatepicker () @property (nonatomic, strong) uidatepicker *datepicker; @end @implementation hwdatepicker - (id)initwithframe:(cgrect)frame{ if (self = [super initwithframe:frame]) { //背景框 uiimageview *back = [[uiimageview alloc] initwithframe:cgrectmake(0, 0, self.bounds.size.width, self.bounds.size.height)]; back.image = [uiimage imagenamed:@"datepickerbj"]; [self addsubview:back]; //日期选择器 _datepicker = [[uidatepicker alloc] init]; _datepicker.frame = cgrectmake(10, 10, self.frame.size.width - 20, 120); _datepicker.backgroundcolor = [uicolor clearcolor]; [_datepicker setdatepickermode:uidatepickermodedate]; nslocale *locale = [[nslocale alloc] initwithlocaleidentifier:@"zh_cn"]; _datepicker.locale = locale; nsdateformatter *formatter_mindate = [[nsdateformatter alloc] init]; [formatter_mindate setdateformat:@"yyyy-mm-dd"]; nsdate *mindate = [formatter_mindate datefromstring:@"2008-01-01"]; formatter_mindate = nil; [_datepicker setminimumdate:mindate]; [self addsubview:_datepicker]; //确定按钮 uibutton *surebtn = [[uibutton alloc] initwithframe:cgrectmake((self.frame.size.width - mainw * 0.36) * 0.5, self.frame.size.height * 0.747, mainw * 0.36, mainw * 0.11)]; [surebtn setimage:[uiimage imagenamed:@"surebtn"] forstate:uicontrolstatenormal]; [surebtn addtarget:self action:@selector(surebtnonclick) forcontrolevents:uicontroleventtouchupinside]; [self addsubview:surebtn]; } return self;} - (void)surebtnonclick{ [self dismiss]; if (_delegate && [_delegate respondstoselector:@selector(datepickerview:didclicksurebtnwithselectdate:)]) { [_delegate datepickerview:self didclicksurebtnwithselectdate:[self getdatestring]]; }} - (nsstring *)getdatestring{ nsdateformatter *dateformatter = [[nsdateformatter alloc] init]; [dateformatter setdateformat:@"yyyy-mm-dd"]; nsstring *date = [dateformatter stringfromdate:[self.datepicker date]]; return date;} - (void)show{ [uiview animatewithduration:0.3 animations:^{ self.frame = cgrectmake(mainw * 0.05, mainh - mainw * 0.75, mainw * 0.9, mainw * 0.5); }];} - (void)dismiss{ [uiview animatewithduration:0.3 animations:^{ self.frame = cgrectmake(mainw * 0.05, mainh, mainw * 0.9, mainw * 0.5); }];} @end |
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持米米素材网。
原文链接:https://blog.csdn.net/hero_wqb/article/details/51277512
发表评论