cocoa提供了UIDatePicker控件,但是對于程序員而言并不友好。其糟糕之處,莫過于無法指定其frame,它的大小固定為320*216(占據了近整個iphone屏幕的一半),導致在UI設計時很難安排下這個“巨大”的東西。我們自定義的日期挑選控件是這樣的。它默認情況下顯示為一個textfield,以文本的方式顯示日期,當你試圖編輯它時,會彈出一個足夠巨大的UIDatePicker控件:

欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

自定義日期挑選控件

系統 1629 0

<!--StartFragment-->

cocoa提供了UIDatePicker控件,但是對于程序員而言并不友好。其糟糕之處,莫過于無法指定其frame,它的大小固定為320*216(占據了近整個iphone屏幕的一半),導致在UI設計時很難安排下這個“巨大”的東西。

我們自定義的日期挑選控件是這樣的。

它默認情況下顯示為一個 textfield,以文本的方式顯示日期,當你試圖編輯它時,會彈出一個足夠巨大的UIDatePicker控件:

自定義日期挑選控件 自定義日期挑選控件

<!--StartFragment-->

轉動日期時,其實 textfield中的值會作相應改變。選擇好日期后,點擊左上角的關閉按鈕關閉這個UIDatePicker。

這個控件的使用非常簡單。

通常只需要通過下面的代碼構造它并 addSubview就可以了:

DatePicker * dp=[[ DatePicker alloc ] initWithFrame : CGRectMake ( 10 , 25 , 220 , 35 )];

[ self . view addSubview :dp];

如果想改變 DatePicker的樣式,比如顯示時間而不是日期,可以修改其datePickerMode和dateFormatter屬性:

dp. datePickerMode = UIDatePickerModeTime ;

NSDateFormatter * df=[[ NSDateFormatter alloc ] init ];

[df setDateFormat : @"HH:mm:ss" ];

dp. dateFormatter =df;

如果要獲取控件的日期時間值和字符串值,則可以使用控件的 date屬性和textField.text屬性。

全部的源代碼在這里:

============ DatePicker.h===========

@interface DatePicker : UIView

<UITextFieldDelegate>{

UITextField * textField ; // 文本框

UIDatePicker * datePicker ; // 日期選擇控件

NSDateFormatter * dateFormatter ; // 日期格式

UIDatePickerMode datePickerMode ; // 日期控件顯示風格

NSDate * date ;

UIView * subview ;

}

@property ( nonatomic ) UIDatePickerMode datePickerMode;

//@property(nonatomic,retain)UITextField* textField;

@property ( nonatomic , retain )NSDateFormatter* dateFormatter;

@property ( nonatomic , retain )NSDate* date;

//@property(nonatomic,retain)UIDatePicker* datePicker;

-( UIDatePickerMode )datePickerMode;

-( void )setDatePickerMode:( UIDatePickerMode )mode;

-( NSDateFormatter *)dateFormatter;

-( void )setDateFormatter:( NSDateFormatter *)df;

-( NSDate *)date;

-( void )setDate:( NSDate *)d;

-( UITextField *)textField;

-( UIDatePicker *)datePicker;

@end

============== DatePicker.m==============

#import "DatePicker.h"

@implementation DatePicker

-( UIDatePicker *)datePicker

{

return datePicker ;

}

-( UITextField *)textField

{

return textField ;

}

-( NSDate *)date

{

return date ;

}

-( void )setDate:( NSDate *)d

{

date =d;

datePicker . date = date ;

}

-( NSDateFormatter *)dateFormatter

{

return dateFormatter ;

}

-( void )setDateFormatter:( NSDateFormatter *)df{

dateFormatter =df;

textField . text =[ dateFormatter stringFromDate : date ];

}

-( UIDatePickerMode )datePickerMode

{

return datePickerMode ;

}

-( void )setDatePickerMode:( UIDatePickerMode )mode{

datePickerMode =mode;

datePicker . datePickerMode = datePickerMode ;

}

- ( id )initWithFrame:( CGRect ) frame {

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

// 默認日期格式為 yyyy-MM-dd

dateFormatter = [[ NSDateFormatter alloc ] init ];

[ dateFormatter setLocale :[[ NSLocale alloc ] initWithLocaleIdentifier : @"zh_CN" ]]; //location 設置為中國

[ dateFormatter setDateFormat : @"yyyy-MM-dd" ];

//picker 的默認時間為當前時間

date =[ NSDate date ];

//picker 的默認 style 為只顯示日期

datePickerMode = UIDatePickerModeDate ;

// 構造一個子視圖 , 用于顯示日期選擇器

subview =[[ UIView alloc ] initWithFrame : CGRectMake ( 0 , 0 , 320 , 480 )];

subview . backgroundColor =[ UIColor clearColor ];

subview . tag = 0 ;

// 為子視圖構造工具欄按鈕

UIBarButtonItem * item = [[[ UIBarButtonItem alloc ]

initWithBarButtonSystemItem : UIBarButtonSystemItemStop

target : self action : @selector ( btnCloseClick )] autorelease ];

NSArray * buttons=[ NSArray arrayWithObjects :item, nil ];

// 為子視圖構造工具欄

UIToolbar *subToolbar=[[ UIToolbar alloc ] initWithFrame : CGRectMake ( 0 , 0 , 320 , 44 )];

subToolbar. barStyle = UIBarStyleBlackTranslucent ;

[subToolbar sizeToFit ];

[subToolbar setItems :buttons animated : YES ]; // 把按鈕加入工具欄

[ subview addSubview :subToolbar]; // 把工具欄加入子視圖

[subToolbar release ];

// 為子視圖構造 datePicker

datePicker =[[ UIDatePicker alloc ] init ];

[ datePicker setDate : date ];

datePicker . frame = CGRectMake ( 0 , 44 , 320 , 216 );

datePicker . datePickerMode = datePickerMode ;

// 指定 datepicker valueChanged 事件

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

[ subview addSubview : datePicker ]; // datePicker 加入子視圖

// 上面是子視圖,下面是父視圖

// 文本框

textField =[[ UITextField alloc ] initWithFrame : frame ];

textField . delegate = self ;

// textField.enabled=NO;

textField . borderStyle = UITextBorderStyleRoundedRect ;

textField . text =[ dateFormatter stringFromDate : date ];

[ self addSubview : textField ];

}

return self ;

}

// datepicker 的值改變時觸發

-( void )dateChanged:( id )sender{

date = [sender date ]; // 獲取 datepicker 的日期

// 改變 textField的值

textField . text =[ NSString stringWithString :

[ dateFormatter stringFromDate : date ]];

}

// 關閉按鈕點擊時觸發

-( void )btnCloseClick{

if ( subview != nil ){

subview . tag = 0 ;

[ subview removeFromSuperview ];

}

}

- ( void )dealloc {

[ textField release ];

[ date release ];

[ dateFormatter release ];

[ datePicker release ];

[ subview release ];

[ super dealloc ];

}

#pragma mark textField delegate method

// textField 被點擊時觸發

-( BOOL )textFieldShouldBeginEditing:( UITextField *) textField {

if ( subview . tag == 0 ) { // tag 標志等于 0 ,說明 datepicker 未顯示

// tag 標志為 1 ,并顯示子視圖

subview . tag = 1 ;

[ self . superview addSubview : subview ];

}

return NO ;

}

@end

<!--EndFragment-->

<!--EndFragment-->

自定義日期挑選控件


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 色综合99| 亚洲无线一二三四手机 | 综合久久亚洲 | 国产精品久久久久久久久久免费 | 末成年毛片在线播放 | 一级特黄aa大片欧美 | 人人看人人插 | 国产精品日本一区二区在线播放 | 日韩欧美在线免费观看 | 亚洲午夜电影 | 一区二区蜜桃 | 91麻豆精品一区二区三区 | 天干夜天天夜天干天 | 视频一区 精品自拍 | 国产欧美日韩综合精品一区二区 | 精品在线91 | 天天舔天天舔 | 国产亚洲精品一品区99热 | 亚洲欧美综合精品久久成人 | 亚洲欧美视频 | 99精品久久秒播无毒不卡 | 无码缴情做A爱片毛片A片 | 男女午夜性爽快免费视频不卡 | 国产综合亚洲精品一区二 | 夜夜撸日日操 | 久久日本精品99久久久久 | 一级性黄色片 | 久久一区二区精品综合 | 亚洲精品中文字幕乱码一区二区 | 国产精品九九久久一区hh | 久久国产精品亚洲 | 久久久久无码国产精品一区 | 99久久精品国产一区二区三区 | 久久综合九色综合欧美播 | 一区二区三区免费在线 | 波多野结衣精品 | 亚洲精品国产电影 | www国产| 毛片毛片毛片毛片毛片毛片毛片 | 亚洲一区二区中文字幕 | 99久久久国产精品 |