聲明 歡迎轉載,但是請尊重作者勞動成果,轉載請保留此框內聲明,謝謝。 文章出處:http://blog.csdn.net/iukey |
UIDatePicker 是一個控制器類,封裝了 UIPickerView,但是他是UIControl的子類,專門用於接受日期、時間和持續時間長度的輸入。日期選擇器的各列會按照指定的風格進行自動設定,這樣就讓開發人員不必關心如何配置錶盤這樣的底層操作。你也可以對其進行定製,令其使用任何範圍的日期。
UIDatePicker 依賴於 NSDate 類,這個類是cocoa 基礎的一員,以前用於案頭系統。本文中僅需用到 initWithString 來建立NSDate 所以NSDate 留待專題講解,你只需要掌握本文中使用的方法就好。
NSDate* _date = [ [ NSDate alloc] initWithString:@"2012-03-07 00:35:00 -0500"];
一、建立日期/時間選取器
UIDatePicker 使用起來比標準 UIPickerView 更簡單。他會根據你指定的日期範圍建立自己的資料來源。使用它只需要建立一個對象:
UIDatePicker *datePicker = [ [ UIDatePicker alloc] initWithFrame:CGRectMake(0.0,0.0,0.0,0.0)];
預設情況下選取會顯示目前的日期和時間,並提供幾個錶盤,分別顯示可以選擇的月份和日期、小時、分鐘、以及上午、下午。因此使用者預設可以選擇任何日期和時間的組合。
二、日期選擇器模式
日期/時間選取器支援4種不同模式的選擇方式。通過設定 datePickerMode 屬性,可以定義選擇模式:
datePicker.datePickerMode = UIDatePickerModeTime;
支援的模式:
typedef enum { UIDatePickerModeTime, // Displays hour, minute, and optionally AM/PM designation depending on the locale setting (e.g. 6 | 53 | PM) UIDatePickerModeDate, // Displays month, day, and year depending on the locale setting (e.g. November | 15 | 2007) UIDatePickerModeDateAndTime, // Displays date, hour, minute, and optionally AM/PM designation depending on the locale setting (e.g. Wed Nov 15 | 6 | 53 | PM) UIDatePickerModeCountDownTimer // Displays hour and minute (e.g. 1 | 53)} UIDatePickerMode;
三、時間間隔
你可以將分鐘錶盤設定為以不同的時間間隔來顯示分鐘,前提是該間隔要能夠讓60整除。預設間隔是一分鐘。如果要使用不同的間隔,需要改變 minuteInterval屬性:
datePicker.minuteInterval = 5;
四、日期範圍
你可以通過設定mininumDate 和 maxinumDate 屬性,來指定使用的日期範圍。如果使用者試圖滾動到超出這一範圍的日期,錶盤會復原到最近的有效日期。兩個方法都需要NSDate 對象作參數:
NSDate* minDate = [[NSDate alloc]initWithString:@"1900-01-01 00:00:00 -0500"]; NSDate* maxDate = [[NSDate alloc]initWithString:@"2099-01-01 00:00:00 -0500"]; datePicker.minimumDate = minDate; datePicker.maximumDate = maxDate;
如果兩個日期範圍屬性中任何一個未被設定,則預設行為將會允許使用者選擇過去或未來的任意日期。這在某些情況下很有用處,比如,當選擇生日時,可以是過去的任意日期,但終止與當前日期。如果你希望設定預設顯示的日期,可以使用date屬性:
datePicker.date = minDate;
此外,你還可以用 setDate 方法。如果選擇了使用動畫,則錶盤會滾動到你指定的日期:
[ datePicker setDate:maxDate animated:YES];
五、顯示日期選取器
[ self.view addSubview:datePicker];
需要注意的是,選取器的高度始終是216像素,要確定分配了足夠的空間來容納。
六、讀取日期
NSDate* _date = datePicker.date;
由於日期選取器是 UIControl的子類 (與UIPickerView不同),你還可以在UIControl類的通知結構中掛接一個委託:
[ datePicker addTarget:self action:@selector(dateChanged:) forControlEvents:UIControlEventValueChanged ];
只要使用者選擇了一個新日期,你的動作類就會被調用:
-(void)dateChanged:(id)sender{ UIDatepicker* control = (UIDatePicker*)sender;NSDate* _date = control.date;/*添加你自己響應代碼*/}
是不是覺得很好玩呢?確實。如果覺得好玩,你也試著封裝一個UIPickerView 試試看,打造一個你自己的專用滾輪。