iOS 導航欄的navigationBar,navigationItem的詳解

1.navigationBar

UINavigationBar是導航控制器的只讀屬性,UIViewController沒有這個屬性,顯示在屏幕頂部的欄中,通常與導航控制器結合使用(這里只說它在導航控制器中的作用)。
@property(nonatomic,readonly) UINavigationBar *navigationBar;
官方文檔里說的很詳細

所以它的作用就是決定導航欄的外觀,比如:barStyle

由于UINavigationBar是導航控制器的屬性,所以如果直接繼承UINavigationController
self.navigationBar.barStyle=UIBarStyleBlack;//灰底,白字
self.navigationBar.barStyle=UIBarStyleDefault;//白底,黑字(默認)
或
[self.navigationBar setBarStyle:UIBarStyleBlack];

如果是UIViewController的子類
self.navigationController.navigationBar.barStyle=UIBarStyleBlack

tintColor導航欄元素項的顏色(上圖topItem,backItem,rightBarButtonItem)

self.navigationBar.tintColor=[UIColor yellowColor];

barTintColor導航欄背景色,默認會有透明效果。

self.navigationBar.barTintColor=[UIColor purpleColor];

translucent默認導航欄半透明,設置NO為不透明,顯示顏色就是設定的顏色

在設置為NO之后控制器的view自動向下偏移64(導航欄高度的)

self.navigationBar.translucent=NO;

Items,backItem,topItem分別表示為數組,上一個控制器,當前控制器(棧頂控制器)

Items里面裝著通過- (void)pushNavigationItem:(UINavigationItem *)item animated:(BOOL)animated;進來的所有視圖控制器
具體可以參考文檔里面的圖

- (void)setBackgroundImage:(UIImage *)backgroundImage forBarMetrics:(UIBarMetrics)barMetrics該方法是設置導航欄背景圖片的

第一個參數backgroundImage是提供的圖片對象,如果圖像為空[UIImage imageNamed:@""];也能讓背景透明,但是push之后的控制器導航欄會卡一下。
第二個參數是一個枚舉,UIBarMetricsDefault,UIBarMetricsCompact, UIBarMetricsDefaultPrompt = 101, UIBarMetricsCompactPrompt,是在圖像不夠顯示的時候(一般是橫豎屏切換的時候)是否橫向或縱向平鋪

shadowImage陰影圖片,要先設置backgroundImage才會有效果,默認是黑色的背景色,導航欄下面的黑線就是這張圖片,給個空圖片[UIImage imageNamed:@""]就能去掉黑色(黑線)

prefersLargeTitles 大標題,默認是NO,設置為YES標題會變大。

titleTextAttributes導航欄標題的title的富文本屬性,但是要設置導航欄標題內容不能通過UINavigationBar,要通過navigationItem,后文......

backIndicatorImage返回按鈕的圖片

[[UINavigationBar appearance] setBackIndicatorImage:[UIImage imageNamed:@""]];

backIndicatorTransitionMaskImage設置了以后再點擊之后(或者返回時才能看到效果)


[[UINavigationBar appearance]setBackIndicatorTransitionMaskImage:[UIImage imageNamed:@""]];

2.navigationItem

不同于navigationBar,navigationItem是UIViewController的屬性,所以

例如
self.navigationController.navigationItem.title=@"無效";
self.navigationItem.title=@"有效";

導航欄上的navigationItem屬性主要有:
title當前控制器的title

//如果自定義可以用
- (instancetype)initWithTitle:(NSString *)title;

titleView自定義的UIView可以替換title

//customView為自定義view
self.navigationItem.titleView=[self customView];

backBarButtonItem,leftBarButtonItem,leftBarButtonItems如果當前視圖自定義了leftBarButtonItem這個按鈕,就顯示這個自定義的按鈕,如果沒有自定義,但是上一個視圖自定義了backBarButtonItem就顯示上一個視圖的backBarButtonItem,如果都沒有就顯示系統默認
的back;
leftBarButtonItems顯示為一組按鈕

如果要在當前界面自定義就自定義leftBarButtonItem,自定義backBarButtonItem無效。 被push之后就是上一個視圖對應的backBarButtonItem

UIButton *backButton=[UIButton buttonWithType:UIButtonTypeCustom];
UIBarButtonItem *items=[[UIBarButtonItem alloc]initWithCustomView:backButton];
self.navigationItem.leftBarButtonItem = items;

rightBarButtonItem,rightBarButtonItems,rightBarButtonItem默認沒有,需要自定義按鈕及點擊事件;rightBarButtonItemsleftBarButtonItems一樣都是一組按鈕

hidesBackButton隱藏返回按鈕,注意隱藏之后(如果沒提供其他方式返回)就不能返回到上一個視圖,往右滑動屏幕也不會返回

self.navigationItem.hidesBackButton=YES;

leftItemsSupplementBackButton,如果設置為YES會在你自定義了

leftBarButtonItem之后也會顯示系統的返回按鈕。默認是NO

收錄原文地址

推薦個不錯的iOS進階視頻,感興趣可看一看:觀看地址

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,818評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,185評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,656評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,647評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,446評論 6 405
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,951評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,041評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,189評論 0 287
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,718評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,602評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,800評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,316評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,045評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,419評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,671評論 1 281
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,420評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,755評論 2 371

推薦閱讀更多精彩內容