iOS自定義的導航條:CustomNavigationBar

jopen 10年前發布 | 259K 次閱讀 IOS iOS開發 移動開發

一種自定義的導航條

之所以自定義導航條,原因有兩個:

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 方法寫入最近使用的關鍵字數組。

iOS自定義的導航條:CustomNavigationBar iOS自定義的導航條:CustomNavigationBar

項目主頁:http://www.baiduhome.net/lib/view/home/1389340054226

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!