UINavigationBar 自定義,title設定
UINavigationBar是用於實現管理層級關係內容的元件,直接繼承自UIView。通常用在UINavgationController類中,用於管理和顯示UINavgationController的subViewController , 同時UINavgationBar也可以單獨使用,新增至任何的UIView中。UINavigationBar比較重要的屬性為,左側按鈕,中間的標題,以及右側按鈕。
設定外觀
通過barStyle,titColor,以及translucent屬性,我們可以簡單的定製UINavgationBar的外觀。
其中barStyle對用的樣式外觀的列舉量包括:
1 |
UIBarStyleDefault,對應一個藍色漸變背景 |
2 |
UIBarStyleBlack,對應一個不透明的褐色背景樣式。 |
3 |
UIBarStyleBlackOpaque,等用於UIBarStyleBlack樣式,但規定為棄用型別, |
4 |
UIBarStyleBlackTranslucent,等用於barStyle設定為UIBarStyleBlack,同時指定translucent屬性為YES,規定為棄用型別。 |
translucent屬性控制bar的背景是否擁有部分透明效果,當值設定為YES時,無論是什麼樣式的navgation bar,其背景都是部分透明的。
新增內容
UINavgationBar雖然直接繼承於UIView,但其本身並不是同其它UIView一樣通過addSubview去新增內容,比較特殊的是,需要通過navgation item類向其補充指定的 內容,包括按鈕和標題。究其原因是在設計上UINavgationBar是通過維護一個UINavgationItem物件棧來實現管理具有層級關係的檢視內容。通過
1 |
-
( void )pushNavigationItem:(UINavigationItem
*)item animated:( BOOL )animated |
2 |
3 |
-
(UINavigationItem *)popNavigationItemAnimated:( BOOL )animated |
4 |
5 |
-
( void )setItems:(NSArray
*)items animated:( BOOL )animated |
三個方法,來向navgation bar中新增或移除內容。
UINavgationBar的items屬性儲存了所有的item,為陣列型別,通過items屬性我們可以遍歷所有的item元素。
UINavgationBar的topItem指定了當前navgation bar顯示的內容,topItem為棧頂元素,假如當前navgation bar維護了n個items,那麼topItem的索引為n-1 ;
UINavgationBar的backItem儲存了topItem的下一個item,即索引為n-2的item。如果當前只有一個item,那麼該屬性為nil,而不是與topItem指向相同的item。
UINavgationItem
該類封裝了關於UINavgationBar的物件棧中的顯示資訊,需要注意的是其直接繼承自NSObject型別,從名稱上注意不要把其當做是UIView的子類。通過
1 |
-
(id)initWithTitle:(NSString *)title |
方法來新建一個UINavgationItem物件,其中title則為顯示在UINavgationBar中間的文字標題。並且該引數會將文字內容儲存在UINavgationItem的title屬性中。在新的 UINavgationItem物件生成之後,通過改變其title屬性,也可以更新UInavgationBar的中間的文字標題內容。同時UINavgationItem提供了titleView屬性,來讓我們更加靈活的定製UINavgationBar中間顯示內容,而不僅限於顯示普通的文字標題。有時間在對其進行詳細描述,此處只是簡單提示一下。本篇不對其進行詳細介紹,
設定title樣式
UINavgationBar提供了titleTextAttributes 屬性來簡單的設定其title樣式,titleTextAttributes是一個NSDictionary型別,包含的固定的屬性名稱,可以用來設定title的樣式,指定的屬性keys聲明於NSString UIKit Additions Reference擴充套件中,包括:
1 |
NSString
* const
|