1. 本節(jié)課將為您演示另一款第三方的日歷類庫。首先確保在您的項(xiàng)目中,已經(jīng)安裝了所需的第三方庫剥汤,雙擊查看此處的Pod配置文件。
2. 根據(jù)配置文件中的相關(guān)設(shè)置排惨,安裝第三方庫吭敢。安裝完成之后,雙擊打開此處的項(xiàng)目文件暮芭。
3. 然后在左側(cè)的項(xiàng)目導(dǎo)航區(qū)鹿驼,打開視圖控制器的代碼文件欲低。
4. 現(xiàn)在開始編寫代碼,創(chuàng)建一個(gè)日歷控件蠢沿。
5. 首先在當(dāng)前的類文件中伸头,引入已經(jīng)安裝的第三方類庫。
6. 添加一個(gè)日歷菜單視圖變量舷蟀,和一個(gè)日歷視圖變量恤磷,作為當(dāng)前類的兩個(gè)屬性。日歷菜單視圖將位于日歷視圖的上方野宜,用來顯示日歷的星期扫步。
8. 然后對(duì)日歷菜單視圖匈子,進(jìn)行初始化操作河胎,并設(shè)置其顯示區(qū)域位于屏幕的上方。
9. 接著對(duì)日歷視圖進(jìn)行初始化操作虎敦,并設(shè)置其顯示區(qū)域游岳。
10. 設(shè)置日歷視圖的外觀代理、日歷代理和動(dòng)畫代理其徙,都是當(dāng)前的視圖控制器對(duì)象胚迫。
11. 設(shè)置日歷菜單視圖的菜單視圖代理,同樣是當(dāng)前的視圖控制器對(duì)象唾那。
13. 添加一個(gè)方法,用來監(jiān)聽視圖控制器對(duì)它的子視圖進(jìn)行布局的事件闹获。
14. 當(dāng)監(jiān)聽到該事件時(shí)期犬,將依次提交對(duì)菜單視圖和日歷視圖的刷新。
15. 接著添加一個(gè)針對(duì)視圖控制器的擴(kuò)展避诽,并使其遵循日歷視圖協(xié)議和日歷菜單視圖協(xié)議龟虎。
16. 添加一個(gè)代理方法,用來設(shè)置日歷的模式沙庐。共有月模式和周模式兩種鲤妥。
17. 添加一個(gè)代理方法,用來設(shè)置將星期天轨功,作為一個(gè)星期的開始日期。
18. 該代理方法用來設(shè)置在一個(gè)星期當(dāng)中容达,每天的日期文字顏色古涧。
19. 在此設(shè)置當(dāng)該日為星期天時(shí),設(shè)置文字的顏色為紅色花盐,否則設(shè)置文字的顏色為黑色羡滑。
20. 添加一個(gè)代理方法菇爪,用來設(shè)置允許突出顯示某個(gè)日期。
21. 接著添加此代理方法柒昏,用來設(shè)置允許以動(dòng)態(tài)的方式進(jìn)行尺寸的縮放凳宙。
22. 添加一個(gè)代理方法,用來設(shè)置是否選中某個(gè)日期視圖职祷,此處使用隨機(jī)的方式來決定是否選中氏涩。
23. 添加一個(gè)代理方法,用來響應(yīng)某個(gè)日期被選中時(shí)的事件有梆。此時(shí)在控制臺(tái)輸出選中的日期是尖。
24. 此代理方法用來設(shè)置是否允許在日期的上方,顯示一個(gè)標(biāo)識(shí)符泥耀。
25. 添加一個(gè)代理方法饺汹,用來設(shè)置是否允許在日期的上方,顯示一個(gè)點(diǎn)標(biāo)識(shí)痰催。
26. 獲得當(dāng)前位置上的日期的天數(shù)兜辞。
27. 然后通過隨機(jī)函數(shù)生成一個(gè)0到30之間的數(shù)字。
28. 假如當(dāng)前位置上的日期的天數(shù)夸溶,和隨機(jī)數(shù)字相同時(shí)逸吵,則在此日期的位置顯示一個(gè)點(diǎn)標(biāo)識(shí)。
29. 其它的情況則不顯示點(diǎn)標(biāo)識(shí)蜘醋。
30. 添加一個(gè)代理方法胁塞,用來設(shè)置點(diǎn)標(biāo)識(shí)的顏色。
31. 在此同樣通過隨機(jī)函數(shù)压语,生成一個(gè)隨機(jī)的顏色啸罢。
33. 生成一個(gè)在1和3之間的隨機(jī)整數(shù)胎食。
34. 然后根據(jù)隨機(jī)整數(shù)進(jìn)行判斷扰才。
35. 根據(jù)隨機(jī)整數(shù)的值,返回不同長(zhǎng)度的顏色數(shù)組厕怜。
36. 接著添加一個(gè)代理方法衩匣,用來設(shè)置是否在日期上顯示高亮效果。
37. 添加一個(gè)代理方法粥航,設(shè)置點(diǎn)標(biāo)識(shí)的尺寸琅捏。
38. 繼續(xù)添加一個(gè)代理方法,設(shè)置星期的顯示方式递雀,此處設(shè)置為縮寫方式柄延。共有正常、縮寫和超級(jí)縮寫三種樣式可以選擇缀程。
39. 該代理方法搜吧,用來設(shè)置選區(qū)視圖的貝塞爾路徑市俊。
40. 在此返回日期視圖的顯示區(qū)域,作為選區(qū)視圖的路徑滤奈。
41. 添加一個(gè)代理方法摆昧,不允許顯示自定義的單獨(dú)選區(qū)。
42. 添加一個(gè)代理方法蜒程,用來設(shè)置顯示在日期上的輔助視圖绅你。
43. 初始化一個(gè)輔助視圖,設(shè)置其顯示區(qū)域和日期視圖相同搞糕,并且形狀為圓形勇吊。
44. 設(shè)置輔助視圖的填充顏色為淺灰色,然后返回該輔助視圖窍仰。
45. 添加一個(gè)代理方法汉规,用來設(shè)置是否允許在日期視圖上,顯示一個(gè)輔助視圖驹吮。
46. 設(shè)置當(dāng)日期視圖中的日期為當(dāng)日的天數(shù)時(shí)针史,顯示輔助視圖,否則不顯示碟狞。
47. 繼續(xù)添加一個(gè)代理方法啄枕,用來設(shè)置補(bǔ)充視圖。該補(bǔ)充視圖將被用來在所有屬于星期五的天數(shù)位置族沃,繪制一個(gè)圓環(huán)频祝。
49. 接著初始化一個(gè)浮點(diǎn)類型的常量脆淹,作為圓環(huán)的間距常空。
50. 初始化另一個(gè)浮點(diǎn)類型的常量,作為圓環(huán)的寬度盖溺。
51. 初始化一個(gè)浮點(diǎn)類型的常量漓糙,作為圓環(huán)在垂直方向上的偏移距離。
52. 創(chuàng)建一個(gè)圖形層變量烘嘱,用來繪制圓環(huán)昆禽。
54. 設(shè)置圓環(huán)的線條顏色為紫色蝇庭。
55. 在此創(chuàng)建一個(gè)和日期視圖相比醉鳖,具有相同顯示區(qū)域的視圖對(duì)象。
56. 通過計(jì)算獲得圓環(huán)的直徑數(shù)據(jù)哮内。
58. 從而創(chuàng)建一個(gè)矩形區(qū)域,用來繪制圓環(huán)形狀。
59. 對(duì)圖形層進(jìn)行初始化操作漾根,并將該層添加到新建視圖的層中。
61. 接著設(shè)置層的線條寬度和描邊顏色兩個(gè)屬性辐怕。
62. 初始化一個(gè)浮點(diǎn)常量,作為圓環(huán)的線寬嵌入值从绘。
63. 通過調(diào)用矩形區(qū)域?qū)ο蟮南嚓P(guān)方法寄疏,獲得和該矩形區(qū)域具有相同中心點(diǎn),但是更大的另一個(gè)矩形區(qū)域僵井。
64. 接著獲得該區(qū)域的中心點(diǎn)坐標(biāo)陕截。
66. 然后生成繪制圓環(huán)的結(jié)束點(diǎn)角度批什。
67. 接著通過中心點(diǎn)农曲、半徑、起點(diǎn)角度驻债、結(jié)束點(diǎn)角度以及是否順時(shí)針等數(shù)據(jù)乳规,創(chuàng)建一個(gè)環(huán)形路徑。
68. 設(shè)置層的路徑為環(huán)形路徑合呐,并設(shè)置層的顯示區(qū)域暮的,和當(dāng)前的日期層保持相同。
70. 接著添加一個(gè)代理方法冻辩,用來設(shè)置在何種情況下,允許顯示輔助視圖拆祈。
71. 在此設(shè)置當(dāng)某處的日期的天數(shù)為周五時(shí)恨闪,在該日期位置顯示一個(gè)輔助視圖,否則不會(huì)顯示輔助視圖缘屹。
73. 添加最后一個(gè)代理方法,設(shè)置星期文本的背景顏色為無色轻姿。接著點(diǎn)擊左上角的[編譯并運(yùn)行]按鈕犁珠,啟動(dòng)模擬器預(yù)覽項(xiàng)目。
74. 在彈出的模擬器中互亮,觀察當(dāng)天日期的外觀樣式犁享。然后點(diǎn)擊選擇某個(gè)日期,并觀察控制臺(tái)的日志輸出豹休。
75. 接著點(diǎn)擊下個(gè)月份的第一天炊昆,這樣將自動(dòng)跳轉(zhuǎn)到下個(gè)月份。
76. 在左側(cè)的圓點(diǎn)處按下手指,并向右側(cè)拖動(dòng)凤巨,可以切換至上個(gè)月份视乐。
77. 使用相同的方式,向左側(cè)拖動(dòng)敢茁,切換至下個(gè)月份佑淀。
78. 最后點(diǎn)擊此處的[停止]按鈕,關(guān)閉模擬器彰檬,并結(jié)束本節(jié)課程伸刃。
本文整理自:《app開發(fā)中的神兵利器》,真正的[手把手]教學(xué)模式逢倍,用最快的速度上手iOS開發(fā)捧颅,蘋果商店App Store免費(fèi)下載:https://itunes.apple.com/cn/app/id1209739676,或掃描本頁底部的二維碼较雕。課程配套素材下載地址:資料下載