PS:大家可以在自己的UINavigationController的rootViewController中先不停的在左側(cè)邊右滑行楞,做類似滑動返回的操作重贺,多做幾次,然后在點擊某個Button或cell跳轉(zhuǎn)到下級界面,很多時候在這里會卡桌摺(僅限自定義過導(dǎo)航返回按鈕的工程)
很多中小型項目UI都是使用UITabBarController+UINavigationController來搭建項目的基本開發(fā)框架侣颂,但是系統(tǒng)的基本功能無法滿足產(chǎn)品UI的需求档桃,因此UITabBarController和UINavigationController都需要我們進行自定義。
兩者的自定義其實都很簡單横蜒,直接構(gòu)造一個子類胳蛮,在子類中對原生的按鈕、背景的顏色和文字等進行修改丛晌。
新建一個類AANavigationController繼承自UINavigationController仅炊,其中包含兩個類別,一個控制按鈕與邊界的距離澎蛛,一個控制支持的方向抚垄,可根據(jù)自己的需求來選擇是否需要和修改。關(guān)于這兩個類別谋逻,只貼代碼呆馁,不進行過多說明。
PS:在這篇文章中毁兆,我只貼圖片浙滤,不貼代碼。Why 气堕?纺腊?不是我作,貼代碼茎芭,很多人就會選擇復(fù)制粘貼揖膜,對于一個程序員,復(fù)制粘貼的東西梅桩,你永遠不會記在腦海里壹粟,但如果是自己一行一行敲出來的,哪怕不是自己寫的宿百,效果就有天翻地覆的差別趁仙。
margin類別的實現(xiàn):
Rotation類別的實現(xiàn):
AANavigationController的實現(xiàn)洪添,因為自己項目需求,在這里只進行導(dǎo)航條背景顏色和標題顏色修改幸撕,返回按鈕樣式自定義薇组。(因為這些在我們的項目中都是統(tǒng)一的)
自定義返回按鈕,會導(dǎo)致滑動返回功能失效坐儿,在這里需要進行開啟律胀,但并不是所有地方我們都需要進行滑動返回,該禁止的地方還是要禁止貌矿。
很多工程都是使用UITabBarController+UINavigationController炭菌,UITabBarController中每一個item都是一個控制器,這時逛漫,我們還需要在UITabBarController中禁止導(dǎo)航的rootViewController的滑動返回黑低。
以下是繼承于UITabBarController的類的實現(xiàn):主要是使用UINavigationControllerDelegate來控制返回到rootViewController時,禁止滑動返回功能酌毡。
最開始時克握,本想在自定義的導(dǎo)航控制器中對根視圖進行禁止操作,經(jīng)過測試枷踏,pop方法被執(zhí)行時菩暗,導(dǎo)航控制器中的controllers還是2個,此時進行禁止操作旭蠕,對頁面會有影響停团,具體的影響忘記了(好像是有時候我們滑動返回到一半時,又不想返回掏熬,just joke佑稠,自動彈回當前頁面,這種情況會導(dǎo)致當前頁無法使用滑動返回功能旗芬,有興趣的可以自行測試)舌胶,所以只能在徹底返回到root時再下手。