溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

瘋狂ios講義瘋狂連載之日期選擇器(UIDatePicker)

發(fā)布時(shí)間:2020-06-01 20:35:29 來源:網(wǎng)絡(luò) 閱讀:3629 作者:fkJava李剛 欄目:移動(dòng)開發(fā)

UIDatePicker是一個(gè)可以用來選擇日期和時(shí)間的控件。除此之外,它也可作為倒計(jì)時(shí)控件。
日期選擇器(UIDatePicker)繼承了UIControl,因此UIDatePicker可以作為活動(dòng)控件使用,能與用戶交互,既可在Interface Builder中為UIDatePickerValue Changed事件綁定IBAction事件處理方法,也可在代碼中為該控件綁定事件處理方法。
Interface Builder中選中一個(gè)UIDatePicker,打開對(duì)應(yīng)的屬性檢查器面板,即可看到如圖10.42所示的面板。

瘋狂ios講義瘋狂連載之日期選擇器(UIDatePicker)

10.42  UIDatePicker對(duì)應(yīng)的屬性檢查器



從圖10.42可以看出,UIDatePicker支持如下屬性。


1. Mode 該屬性用于設(shè)置該UIDatePicker的模式,它支持如下列表項(xiàng)。

Date:該UIDatePicker控件僅顯示日期,不顯示時(shí)間。
Time:該UIDatePicker控件僅顯示時(shí)間,不顯示日期。
Date and Time:該UIDatePicker控件同時(shí)顯示日期和時(shí)間。
Count Down Timer:該UIDatePicker控件僅顯示為倒計(jì)時(shí)器。


2. Locale 該屬性用于設(shè)置該UIDatePicker的國際化Locale,假設(shè)設(shè)置該UIDatePicker控件國際化Locale為簡體中文環(huán)境,那么它將以簡體中文習(xí)慣顯示日期。實(shí)際上,我們通常無須手動(dòng)設(shè)置Locale,該UIDatePicker控件默認(rèn)使用iOS系統(tǒng)的國際化Locale。


3. Interval 僅當(dāng)該UIDatePicker控件采用Time、Date and TimeCount Down Timer這三種模式時(shí)有效,該屬性設(shè)置UIDatePicker控件上兩個(gè)時(shí)間之間的間隔。


4. Constraints 該屬性為UIDatePicker控件設(shè)置最小時(shí)間和最大時(shí)間。如果設(shè)置了該屬性值,用戶無法通過該UIDatePicker控件選擇超出該范圍的日期和時(shí)間。


5. Timer 僅當(dāng)該UIDatePicker控件采用Count Down Timer模式時(shí)有效,該屬性設(shè)置該控件作為倒計(jì)時(shí)控件時(shí)剩下的秒數(shù)。

下面通過一個(gè)簡單的例子來示范UIDatePicker的功能和用法,先創(chuàng)建一個(gè)Single View Application,并使用Interface Builder打開應(yīng)用的界面設(shè)計(jì)文件,將UIDatePickerUIButton拖入應(yīng)用界面中。對(duì)UIDatePicker進(jìn)行如下修改。
使用Date and Time模式,讓該選擇器同時(shí)顯示日期和時(shí)間。
將該UIDatePickerLocale設(shè)為Chinese(Simplified),強(qiáng)制該UIDatePicker顯示簡體中文。
勾選Minimum DateMaximum Date,并設(shè)置一個(gè)最小時(shí)間和最大時(shí)間。
進(jìn)行上面的修改之后,將UIDatePickerUIButton兩個(gè)控件擺放整齊,如圖10.43所示。

瘋狂ios講義瘋狂連載之日期選擇器(UIDatePicker)

10.43  設(shè)計(jì)應(yīng)用界面



   程序界面設(shè)計(jì)完成之后,在Interface Builder中將UIDatePicker控件綁定到datePicker IBOutlet屬性,并為按鈕的Touch Up Inside事件綁定clicked: IBAction事件處理方法。經(jīng)過上面所示的步驟之后,接下來修改控制器類的實(shí)現(xiàn)部分代碼,主要是實(shí)現(xiàn)clicked:事件處理方法,其代碼如下。

程序清單:codes/10/10.11/UIDatePickerTest/UIDatePickerTest/FKViewController.m

瘋狂ios講義瘋狂連載之日期選擇器(UIDatePicker)

上面程序中,clicked:方法的粗體字代碼先獲取UIDatePicker控件的日期、時(shí)間,然后程序創(chuàng)建了一個(gè)NSDateFormatter對(duì)象(日期格式器),并使用該日期格式器對(duì)用戶選擇的日期、時(shí)間執(zhí)行格式化。最后使用一個(gè)UIAlertView顯示用戶選擇的日期、時(shí)間。

編譯、運(yùn)行該程序,并通過UIDatePicker控件選擇一個(gè)日期、時(shí)間,然后單擊“確定”按鈕,即可看到如圖10.44所示的效果。

瘋狂ios講義瘋狂連載之日期選擇器(UIDatePicker)


實(shí)例:倒計(jì)時(shí)器


如果將UIDatePicker的模式設(shè)置為Count Down Timer,即可讓該控件作為倒計(jì)時(shí)器使用。當(dāng)將UIDatePicker作為倒計(jì)時(shí)器使用時(shí),程序還應(yīng)該啟動(dòng)一個(gè)定時(shí)器定期更新該UIDatePicker的剩余時(shí)間。由此可見,把UIDatePicker作為Count Down Timer模式使用時(shí),該控件最重要的屬性就是countDownDuration,該屬性代表該倒計(jì)時(shí)器的剩余時(shí)間,程序既可通過countDownDuration屬性獲取該控件的剩余時(shí)間,也可通過修改該屬性來改變?cè)摽丶@示的剩余時(shí)間。

下面通過示例介紹倒計(jì)時(shí)器的用法。首先創(chuàng)建一個(gè)Single View Application,并使用Interface Builder打開應(yīng)用的界面設(shè)計(jì)文件,將UIDatePicker和UIButton拖入應(yīng)用界面中。將UIDatePicker改為Count Down Timer模式,讓該選擇器作為定時(shí)器使用。進(jìn)行上面的修改之后,將UIDatePicker與UIButton兩個(gè)控件擺放整齊。

界面設(shè)計(jì)完成之后,在Interface Builder中將UIDatePicker控件綁定到countDown IBOutlet屬性,將按鈕控件綁定到startBn IBOutlet屬性,并為按鈕的Touch Up Inside事件綁定clicked: IBAction事件處理方法。經(jīng)過上面的步驟之后,下面來修改控制器類的實(shí)現(xiàn)部分代碼,主要是實(shí)現(xiàn)clicked:事件處理方法,其代碼如下。

程序清單:codes/10/10.11/CountDownTest/CountDownTest/FKViewController.m

瘋狂ios講義瘋狂連載之日期選擇器(UIDatePicker)

   上述程序中,①號(hào)粗體字代碼定義了一個(gè)leftSeconds變量,該變量用于保存倒計(jì)時(shí)器的剩余時(shí)間,當(dāng)用戶單擊程序界面時(shí),將會(huì)激發(fā)clicked:方法,該方法將啟動(dòng)一個(gè)定時(shí)器控制每隔60秒執(zhí)行一次tickDown方法,而tickDown方法每執(zhí)行一次,程序就將倒計(jì)時(shí)器的剩余時(shí)間減少60,并動(dòng)態(tài)修改倒計(jì)時(shí)器的剩余時(shí)間,這樣就可讓UIDatePicker顯示的剩余時(shí)間減少。

   編譯、運(yùn)行該程序,通過UIDatePicker設(shè)置倒計(jì)時(shí)器的剩余時(shí)間后,單擊“開始”按鈕,即可看到該倒計(jì)時(shí)器每隔60秒跳動(dòng)一次,跳動(dòng)一次后,剩余時(shí)間減少1分鐘,如圖10.45所示。

瘋狂ios講義瘋狂連載之日期選擇器(UIDatePicker)


————本文節(jié)選自《瘋狂ios講義(上)》

瘋狂ios講義瘋狂連載之日期選擇器(UIDatePicker)


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI