iOS自定义UIDatePicker日期选择器视图

2025-05-29 0 39

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持快网idc。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 iOS自定义UIDatePicker日期选择器视图 https://www.kuaiidc.com/88979.html

相关文章

发表评论
暂无评论