1.項(xiàng)目部署
在oschaina中新建項(xiàng)目管理代碼(免費(fèi),可以私有)
2.環(huán)境部署
設(shè)置啟動(dòng)圖片,版本號(hào)等
3.項(xiàng)目結(jié)構(gòu)搭建
-
讓tabBar控制器成為窗口根控制器
-
為什么(一進(jìn)界面能看到下面的導(dǎo)航條)
-
讓多個(gè)導(dǎo)航控制器成為tabBar控制器的子控制器
-
為什么(讓tabBar的每個(gè)子控制器都有導(dǎo)航條)
-
創(chuàng)建對(duì)應(yīng)的ViewController成為導(dǎo)航控制器的子控制器
-
為什么(顯示界面)
4.自定義tabBarVC
-
1.把添加子控制器的操作封裝到tabBarVC內(nèi)部
-
2.封裝思想:自己的事情自己做,把要做的事情封裝到內(nèi)部去
5.設(shè)置tabBar內(nèi)容
-
1.圖片渲染
- 1??純代碼,創(chuàng)建分類(好處:那張圖片需要設(shè)置就調(diào)用方法)
- 2??手動(dòng)在圖片資源庫(kù)中找到對(duì)應(yīng)的圖片設(shè)置
-
2.字體的渲染
- 1??找到對(duì)應(yīng)的控制器設(shè)置tintColor
- 2??在load方法中通過(guò)appearance修改(load方法只執(zhí)行一次)
-
3.字體大小
- 1??使用appearance
- 2??為什么(UIAppearance能修改特定屬性)
- 3??必須遵守UIAppearance協(xié)議,實(shí)現(xiàn)協(xié)議方法
- 4??如果通過(guò)appearance設(shè)置屬性,必須要在顯示之前設(shè)置
6.實(shí)現(xiàn)百思樣式TabBar
-
1.在對(duì)應(yīng)的tabBar的tabBarButton中添加按鈕
-
2.為什么:系統(tǒng)的按鈕不能滿足需求
-
3.讓對(duì)應(yīng)的tabBarButton點(diǎn)擊失效
-
4.為什么:添加上去的按鈕不能點(diǎn)擊
7.抽取UIBarButtonItem
-
1.為什么:直接添加按鈕,點(diǎn)擊范圍會(huì)擴(kuò)大
-
2.把按鈕添加到UIView中,然后封裝成BarButtonItem
8.處理導(dǎo)航條內(nèi)容
-
1.根據(jù)對(duì)應(yīng)的導(dǎo)航控制器確定左右中間內(nèi)容
-
2.根據(jù)對(duì)應(yīng)的navigation確定具體按鈕,內(nèi)容
9.處理導(dǎo)航條標(biāo)題/背景圖片
-
1.創(chuàng)建導(dǎo)航控制器分類,在load方法中用Appearance設(shè)置
-
2.為什么:創(chuàng)建該類型的導(dǎo)航控制器,方便統(tǒng)一管理
10.設(shè)置返回按鈕
修改按鈕的內(nèi)邊距,改變內(nèi)部控件位置,但超出部分不能點(diǎn)擊
11.自定義導(dǎo)航條
-
1.為什么:調(diào)整按鈕位置也能點(diǎn)擊
-
2.在自定義導(dǎo)航條的loyoutsubview方法攔截按鈕的父控件V,修改位置
12.統(tǒng)一設(shè)置返回按鈕
-
1.在push方法中攔截非根控制器
-
1??用子控制器個(gè)數(shù)判斷
-
2??為什么:用指定的角標(biāo)會(huì)有角標(biāo)越界問(wèn)題
-
3??push方法執(zhí)行完,子控制器的數(shù)組才有值
-
2.隱藏tabBar
13.滑動(dòng)返回
-
1.思想
- 1??自定義返回按鈕時(shí),系統(tǒng)干了什么
- 2??手勢(shì)
- 3??代理
-
2.辦法
- 1??把系統(tǒng)的滑動(dòng)代理設(shè)置成導(dǎo)航控制器
- 2??為什么:自己管理系統(tǒng)的代理方法
- 3??監(jiān)聽(tīng)手勢(shì)在非根控制器時(shí)才觸發(fā) shouldReceiveTouch
- 4??為什么:根控制器不能有滑動(dòng)返回,不然會(huì)假死
14.全局滑動(dòng)返回
-
1.創(chuàng)建一個(gè)拖動(dòng)手勢(shì)
-
2.讓創(chuàng)建的手勢(shì)使用系統(tǒng)自帶的滑動(dòng)返回方法
-
3.獲取系統(tǒng)滑動(dòng)功能的對(duì)象和方法