IOS 導(dǎo)航欄的navigationBar,navigationItem的詳解

1.navigationBar

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

image.png

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

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

tintColor導(dǎo)航欄元素項(xiàng)的顏色(上圖topItem,backItem,rightBarButtonItem)

self.navigationBar.tintColor=[UIColor yellowColor];

barTintColor導(dǎo)航欄背景色,默認(rèn)會(huì)有透明效果。

self.navigationBar.barTintColor=[UIColor purpleColor];

translucent默認(rèn)導(dǎo)航欄半透明,設(shè)置NO為不透明,顯示顏色就是設(shè)定的顏色

在設(shè)置為NO之后控制器的view自動(dòng)向下偏移64(導(dǎo)航欄高度的)

self.navigationBar.translucent=NO;

Items,backItem,topItem分別表示為數(shù)組,上一個(gè)控制器,當(dāng)前控制器(棧頂控制器)

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

image.png

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

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

shadowImage陰影圖片,要先設(shè)置backgroundImage才會(huì)有效果,默認(rèn)是黑色的背景色,導(dǎo)航欄下面的黑線就是這張圖片,給個(gè)空?qǐng)D片[UIImage imageNamed:@""]就能去掉黑色(黑線)

prefersLargeTitles 大標(biāo)題,默認(rèn)是NO,設(shè)置為YES標(biāo)題會(huì)變大。

titleTextAttributes導(dǎo)航欄標(biāo)題的title的富文本屬性,但是要設(shè)置導(dǎo)航欄標(biāo)題內(nèi)容不能通過UINavigationBar,要通過navigationItem,后文......

backIndicatorImage返回按鈕的圖片

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

backIndicatorTransitionMaskImage設(shè)置了以后再點(diǎn)擊之后(或者返回時(shí)才能看到效果)


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

2.navigationItem

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

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

導(dǎo)航欄上的navigationItem屬性主要有:
title當(dāng)前控制器的title

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

titleView自定義的UIView可以替換title

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

backBarButtonItem,leftBarButtonItem,leftBarButtonItems如果當(dāng)前視圖自定義了leftBarButtonItem這個(gè)按鈕,就顯示這個(gè)自定義的按鈕,如果沒有自定義,但是上一個(gè)視圖自定義了backBarButtonItem就顯示上一個(gè)視圖的backBarButtonItem,如果都沒有就顯示系統(tǒng)默認(rèn)
的back;
leftBarButtonItems顯示為一組按鈕

如果要在當(dāng)前界面自定義就自定義leftBarButtonItem,自定義backBarButtonItem無效。 被push之后就是上一個(gè)視圖對(duì)應(yīng)的backBarButtonItem

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

rightBarButtonItem,rightBarButtonItems,rightBarButtonItem默認(rèn)沒有,需要自定義按鈕及點(diǎn)擊事件;rightBarButtonItemsleftBarButtonItems一樣都是一組按鈕

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

self.navigationItem.hidesBackButton=YES;

leftItemsSupplementBackButton,如果設(shè)置為YES會(huì)在你自定義了

leftBarButtonItem之后也會(huì)顯示系統(tǒng)的返回按鈕。默認(rèn)是NO

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一點(diǎn)說明:本文中“導(dǎo)航控制器”區(qū)別于“視圖控制器”存在 UINavigationController UINavi...
    WeiHing閱讀 5,162評(píng)論 0 11
  • 對(duì)nextVC 進(jìn)行屬性賦值后,執(zhí)行push跳轉(zhuǎn),方法的執(zhí)行順序: A跳轉(zhuǎn)到B代碼順序執(zhí)行:B的init 方法;(...
    進(jìn)無盡閱讀 681評(píng)論 1 6
  • #iOS開發(fā)之UI篇#iOS開發(fā)之UI篇 #常用控件介紹1## #UI第09天:滾動(dòng)視圖# ##UIScrollV...
    LennonLin閱讀 1,846評(píng)論 0 0
  • 一、側(cè)滑返回 側(cè)滑返回手勢(shì)是從iOS7開始增加的一個(gè)返回操作,經(jīng)歷了兩年時(shí)間估計(jì)iPhone用戶大部分都已經(jīng)忽略了...
    Yealink閱讀 1,313評(píng)論 0 0
  • 自11月17日確診韓國(guó)出現(xiàn)高致病型H5N6禽流感病毒后,候鳥棲息地和家禽密集飼養(yǎng)地區(qū)持續(xù)出現(xiàn)疫情,截止12月6日該...
    晨曦曉霧閱讀 320評(píng)論 0 1

友情鏈接更多精彩內(nèi)容