UIDatePicker這個類的對象讓用戶能夠在多個車輪上選擇日期和時間。iPhone手機上的‘時鐘’應用程序中的時間與鬧鈴中便使用了該控件。使用這個控件時,若是你能配置正確,當用戶滾動車輪到一個新的日期或者時間上時,利用UIControlEventValueChanged觸發事件。UIDatePicker給出了倒計時模式,可是並無實現相關事件。若是你使用該模式,必須在應用程序中設置一個NSTime對象,讓倒計時中的時間不斷減小。html
UIDatePicker *datePicker = [ [ UIDatePicker alloc] initWithFrame:CGRectMake(0,0,320,216)];
[self.view addSubview: datePicker];post
1.日曆屬性動畫
@property(nonatomic, copy) NSCalendar *calendaratom
相關說明:1.此屬性的默認值對應於用戶的當前日曆,是在‘設置’這個應用程序中去設置的。spa
2.訪問這個屬性至關於調用 NSCalendar類的currentCalendar方法後時返回的值。code
3.設置這個屬性的值爲nil,至關於使用它的默認值。orm
4.calendar屬性指明瞭用於計算時間的文化細節,它指明瞭一年的開始和長度,一年中如何劃分的方式。htm
2.日期屬性對象
@property(nonatomic, strong) NSDate *dateblog
相關說明:1.該屬性的默認值是UIDatePicker對象建立時的日期。
2.該屬性會在UIDatePickerModeCountDownTimer日期模式下被忽略;在該模型中,日期選擇器開始於0:00。
3.設置該屬性可讓時間選擇器旋轉到這個設置的日期與時間,可是不會產生動畫效果。
4.若是要產生動畫效果,須要使用 setDate:animated: 方法。
3.本地化屬性
@property(nonatomic, strong) NSLocale *locale
相關說明:1.默認值是NSLocale類的currentLocale屬性返回的值,或者是是時間選擇器的日曆所使用的本地化值。
2.本地化屬性封裝了關於語言和文化的層面,如日期的格式信息方式。
3.若是設備的‘設置’應用程序中地區選擇「中國」時,NSLog(@"%@",[NSLocale currentLocale].localeIdentifier);返回的是@「zh_CN」。
4.在知足3的前提下,設置_datePicker.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"zh_CN"];是多餘的。
4.設置時間的方法
- (void)setDate:(NSDate *)date
animated:(BOOL)animated
相關說明:該方法用來設置一個新的時間並以動畫的形式展現在時間選擇器上面。(animated值爲YES時,有動畫)
5.時區屬性
@property(nonatomic, strong) NSTimeZone *timeZone
相關說明:默認值是nil,意味着它利用的是NSTimeZone類的localTimeZone(本地時區)做爲當前時區,或者是利用時間選擇器的日曆所使用的時區做爲當前時區。
6.時間選擇器的模式
@property(nonatomic) UIDatePickerMode datePickerMode
相關說明:1.這個屬性指明以哪種方式展現,只有時間、只有日期、既有日期又有時間、倒計時,這四種模式中的一種。
2.默認的模式爲UIDatePickerModeDateAndTime(既有日期又有時間)。
3.UIDatePickerModeTime、UIDatePickerModeDate、UIDatePickerModeDateAndTime、UIDatePickerModeCountDownTimer。
7.最大顯示時間屬性
@property(nonatomic, strong) NSDate *maximumDate
相關說明:1.該屬性值爲NSDate對象,默認值是nil,nil意味着沒有最大顯示時間的約束。
2.該屬性與最小顯示時間屬性(minimumDate)結合,表示一個有效的時間範圍。
3.若是最小顯示時間大於最大顯示時間時,這兩種性質都被忽略。
4.在倒計時模式(UIDatePickerModeCountDownTimer)下,最小顯示時間和最大顯示時間這兩個屬性都會被忽略。
8.最小顯示時間屬性
@property(nonatomic, strong) NSDate *minimumDate
相關說明:1.該屬性值爲NSDate對象,默認值是nil,nil意味着沒有最小顯示時間的約束。
2.該屬性與最大顯示時間屬性(maximumDate)結合,表示一個有效的時間範圍。
3.若是最小顯示時間大於最大顯示時間時,這兩種性質都被忽略。
4.在倒計時模式(UIDatePickerModeCountDownTimer)下,最小顯示時間和最大顯示時間這兩個屬性都會被忽略。
9.間隔時間屬性
@property(nonatomic) NSInteger minuteInterval
相關說明:1.使用該屬性設置由分鐘車輪顯示的時間間隔。
2.間隔值必須均勻地分隔60,若是沒有這樣作,該屬性將使用默認值爲1。
3.該屬性值的範圍是大於等於1,並小於等於30。
10.倒計時秒數屬性
@property(nonatomic) NSTimeInterval countDownDuration
相關說明:1.該屬性設置倒計時須要倒計的秒數。
2.若是時間選擇器的時間模式不是倒計時模式,則該屬性會被忽略。
3.默認值是0.0,最大值爲23:59(86399秒)。
直接經過訪問時間選擇器對象_datePicker的date屬性得到NSDate類型的時間數據:
NSDate *theDate = _datePicker.date;//該屬性返回選中的時間
NSLog(@"%@",[theDate descriptionWithLocale:[NSLocale currentLocale]]);//返回基於本地化的時間信息,其中NSLocale的靜態方法currentLocale返回當前的NSLocale對象
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];//返回一個日期格式對象
dateFormatter.dateFormat = @"YYYY-MM-dd HH-mm-ss";//該屬性用於設置日期格式爲YYYY-MM-dd HH-mm-ss
NSLog(@"%@",[dateFormatter stringFromDate:theDate]);//該方法用於從日期對象返回日期字符串
因爲日期選擇器是 UIControl的子類,所以能夠能夠監聽它的行爲(UIControlEventValueChanged):
[ _datePicker addTarget:self action:@selector(dateChanged) forControlEvents:UIControlEventValueChanged];
- (void)dateChanged
{
NSDate *theDate = _datePicker.date;
NSLog(@"%@",[theDate descriptionWithLocale:[NSLocale currentLocale]]);
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter.dateFormat = @"YYYY-MM-dd HH-mm-ss";
NSLog(@"%@",[dateFormatter stringFromDate:theDate]);
}
1.UIDatePickerModeTime
在這種模式下,顯示時、分、AM/PM標誌(可選)。具體的顯示順序取決於設備的本地化設置。
2.UIDatePickerModeDate
在這種模式下,顯示年、月、日。具體的顯示順序取決於設備的本地化設置。
3.UIDatePickerModeDateAndTime
在這種模式下,顯示日期的月、日、星期,時間的時、分、AM/PM標誌(可選)。具體的顯示順序取決於設備的本地化設置。
4.UIDatePickerModeCountDownTimer
在這種模式下,顯示時、分。應用程序必須實現一個計數器(NSTimer對象),讓倒計時中的時間不斷減小。
一、問題:在UIDatePickerModeTime模式下,如何才能不顯示「上午」/「下午」?
回答:設置本地化屬性爲系統本地化,而且在手機的「設置」--「通用」--「日期與時間」--選擇「24小時制」。
_datePicker.locale = [NSLocale currentLocale];
二、
【極力推薦】中秋節兩天的良心寫做,全面講解UITextField,總有你不知道的知識:UITextField的使用、介紹、講解、全解、簡介、說明