iOS自定義的導航條:CustomNavigationBar
一種自定義的導航條
之所以自定義導航條,原因有兩個:
1、做同時兼容iOS6與iOS7的導航條時,使用原生導航條總是不順手。于是想自定義一個,這樣兼容iOS6與iOS7時,代碼相對統一。另外,因為是自定義的,要做一些特殊的效果時比較容易控制(比如:導航條分成兩行,段選擇器合并到導航條內)。
2、一個個人原因,3.5寸屏幕的iOS7右滑返回時,導航條不動只是內容頁面移動,感覺比較壓抑。所以,希望兼顧原生的右滑返回,又可以使導航條在滑動時跟著移動。
------ 介紹 ------
1、CustomNaviBarView:自定義的導航條,繼承自UIView。
- 將導航條分成左中右三個區域。默認在左區添加一個返回按鈕。 - 提供創建導航條按鈕的方法,可在外部自定義按鈕添加到導航條上。 - 提供外部覆蓋視圖的方法,可在外部自定義一個視圖,覆蓋到導航條上。例如:CustomNaviBarSearchController
2、CustomNaviBarSearchController:搜索關鍵字輸入框,可對接覆蓋到CustomNaviBarView上。
- 提供兩種導航條上的關鍵字輸入框 - 由按鈕觸發,點擊按鈕后顯示輸入框,結束后銷毀輸入框現實按鈕。 - 導航條一直顯示輸入框。 - 提供最近輸入的關鍵字列表。
3、CustomNavigationController:繼承自UINavigationController。
- 把系統導航條隱藏,以便顯示自定義的導航條。 - 若想使用自定義導航條,導航控制器需繼承自此類。
4、CustomViewController:繼承自UIViewController。
- 封裝了接入自定義導航條的方法,把具體業務與自定義導航條分開。 - 所有需使用自定義導航條的視圖控制器可直接繼承此類。
------ 用法 ------
以Demo為例:
1、AppNavigationController繼承自CustomNavigationController。
2、所有視圖控制器繼承自CustomViewController。
3、一些公共定義被放在GlobalDefine.h中全局引用。
4、修改標題、設置自定義按鈕。
[self setNaviBarTitle:@"Title"]; // 設置標題 [self setNaviBarLeftBtn:nil]; // 若不需要默認的返回按鈕,直接賦nil // 創建一個自定義的按鈕,并添加到導航條右側。 _btnNaviRight = [CustomNaviBarView createNormalNaviBarBtnByTitle:@"Next" target:self action:@selector(btnNext:)]; [self setNaviBarRightBtn:_btnNaviRight];
5、覆蓋輸入框
- 創建 CustomNaviBarView 對象。 - 當按鈕觸發時,通過 showTempSearchCtrl 方法顯示輸入框。 - 當輸入框需固定在導航條時,通過 showFixationSearchCtrl 方法現實輸入框。 - 通過 setRecentKeyword 方法寫入最近使用的關鍵字數組。
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!