在項(xiàng)目中碰到一個很常見的場景:在一個navigationController堆棧中,有的controller需要將navigationBar隱藏刨晴,有的controller需要配置不同的背景顏色呐芥,有的需要透明,等等。針對這類場景柬脸,如果直接使用系統(tǒng)的UINavigationController是不能滿足的,因?yàn)橐粋€NavigationController只存在一個navigationBar毙驯,一個navigationBar在Push/Pop過程中不能展現(xiàn)兩種效果肖粮,于是,對于顯示不同導(dǎo)航欄背景色的controller尔苦,一般是將系統(tǒng)navigationBar隱藏,再偽造一個假navigationBar行施,這樣的實(shí)現(xiàn)方式在代碼中很不優(yōu)雅允坚,無形中在controller中引入了不關(guān)業(yè)務(wù)的額外代碼,不方便維護(hù)蛾号,同時在UI布局時還需要考慮navigationBar的高度稠项,影響開發(fā)效率。
有位小伙伴寫了一個控件(QLXNavigationController)鲜结,使用者可以像使用系統(tǒng)控件一樣展运,同時還可以自由配置每個controller導(dǎo)航欄背景色,巧妙地解決了這個問題精刷。但有點(diǎn)瑕疵的是拗胜,新推出一個controller,會額外增加一個controller和navigationController怒允。不過埂软,經(jīng)過測試,在性能上并無大礙纫事,稍微增加了點(diǎn)內(nèi)存占用勘畔。
由于項(xiàng)目中想實(shí)現(xiàn)QQ/美團(tuán)的導(dǎo)航欄動畫效果,因此丽惶,我也基于此以及另外一個開源控件炫七,整合了一個較完善(重寫轉(zhuǎn)場動畫)控件:ConfigurableNaviController,編寫過程中填了其中存在的一些坑钾唬,iOS朋友可以直接拿來替換掉已有項(xiàng)目中的UINavigationController万哪,基本不會存在大的問題,當(dāng)然也可以參考修改自己想要的導(dǎo)航欄效果抡秆。覺得實(shí)用壤圃,記得star一個哈~
ConfigurableNaviController:https://github.com/hncoder/ConfigurableNaviController
參考:
QLXNavigationController:https://github.com/QiuLiangXiong/QLXNavigationController
DZXNavigationController:https://github.com/devzahi/DZXNavigationController