有關(guān)導(dǎo)航欄的一些研究

今天在解決問題時,突然發(fā)現(xiàn)自己對navigationbar不甚了解,在看了風(fēng)往北吹的這篇iOS 自定義導(dǎo)航欄筆記之后,決定跟隨作者的筆記親自實踐一下,so,就有了一下的內(nèi)容.

1. 隱藏導(dǎo)航欄的方法

兩種方法皆可

    [self.navigationController setNavigationBarHidden:YES animated:YES];
    [self.navigationController.navigationBar setHidden:YES];

通過屬性直接設(shè)置之所以能成功犀概,是因為雖然navigationBar是readonly薯定,但是hidden是默認的(readwrite)申尤。建議使用第一個袄琳,通過發(fā)送消息來設(shè)置----風(fēng)往北吹

2.關(guān)于自定義導(dǎo)航欄背景的一些發(fā)現(xiàn).

  • 方案1:通過代理來設(shè)置
[[UINavigationBar appearance] setBarTintColor:[UIColor redColor]];

PS:這個方法確實可以起到改變導(dǎo)航欄顏色的作用,但是我發(fā)現(xiàn)只在特定的地方調(diào)用這個方法才會起作用:
1.在Appledelegate.m中的

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;

方法中調(diào)用;
2.在自定義的CustomNavigationController(繼承自UINavigationController)中調(diào)用.

  • 方案2.直接通過設(shè)置navigationBar的相關(guān)屬性來實現(xiàn)
self.navigationController.navigationBar.barTintColor = [UIColor redColor];

先觀察一下圖層關(guān)系:


未設(shè)置barTintColor.png
設(shè)置barTintColor.png

PS:此處引用風(fēng)往北吹的一段話:

UINavgationBar結(jié)構(gòu)圖說明:
1.從圖中的對照關(guān)系可以看到,UINavigationBar包含一個:UINavigationBarBackground控件(已經(jīng)延伸到邊界辕坝,覆蓋掉了導(dǎo)航欄),另一個UINavigationBarBackIndicatorView(其實就是那個藍色的返回按鈕闻蛀,當(dāng)push進來一個ViewController才會顯示)
2.UINavigationBarBackground控件里面包含:UIBackdropView(UIBackdropEffectView帶有高斯模糊效果的視圖),UIImageView(導(dǎo)航欄下方的陰影分割線)

通過觀察設(shè)置barTintColor前后的圖層發(fā)現(xiàn),無論上面的那種方法,只要設(shè)置了navigationBar的barTintColor屬性,在UIBackdropView上面都會多出兩個view其中一個view的顏色正是我們所設(shè)置的barTint的color顏色.

  • 方案3.通過設(shè)置navgationBar.backgroundColor 來改變背景色.
    具體的設(shè)置方法,在風(fēng)往北吹的文章中說的很清楚了.
    我只是補充一些內(nèi)容
    使用這個方法來修改
    navgationBar
    的背景色的時候最好和下面這個方法搭配使用
[self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault];
self.navigationController.navigationBar.backgroundColor = [UIColor redColor];

至于BackgroundImage:這個參數(shù)的規(guī)格,我們接下來討論.

  1. BackgroundImage:一個空的圖片對象
設(shè)置bar的BackgroundImage為空圖.png

觀察圖層發(fā)現(xiàn)navigationBar的UINavigationBarBackground上沒有了UIBackdropView這個圖層,只有一個image(shadowline).此時導(dǎo)航欄是透明的.

  1. BackgroundImage:一個特定高度的圖片對象


    設(shè)置bar的BackgroundImage為高度為44的圖片.png

    當(dāng)圖片的導(dǎo)讀恰好是44的時候,圖層如上圖,狀態(tài)欄會變成黑色.UINavigationBarBackground上多了UIBarBackgroundTopCurtainView和UIBarBackgroundCustomImageCurtainView

  2. BackgroundImage:一個高度>64的圖片對象


    設(shè)置bar的BackgroundImage為高度為>64的圖片.png

    此時,UINavigationBarBackground就從一個透明的圖片變?yōu)榱宋覀兯O(shè)置的那張圖片.(至于圖片是否被壓縮,需要大家親自試一下)
    4.BackgroundImage:一個高度<44的圖片對象


    設(shè)置bar的BackgroundImage為高度<44的圖片.png

    此時,UINavigationBarBackground就從一個透明的圖片變?yōu)榱宋覀兯O(shè)置的那張圖片.(圖片是通過平鋪的方式從上到下鋪滿64個高度的.)

在測試過程中還發(fā)現(xiàn),如果設(shè)置了BackgroundImage:,則barTintColor的設(shè)置將會無效,同時設(shè)置BackgroundImage:時,BarMetrics:的值只有是UIBarMetricsDefault時圖片設(shè)置非空對象(此指不是[UIImage new])的時候,圖片才能正常的顯示出來.至于為什么還請大神指點一下.謝謝.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市笋敞,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌荠瘪,老刑警劉巖夯巷,帶你破解...
    沈念sama閱讀 217,907評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異哀墓,居然都是意外死亡趁餐,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評論 3 395
  • 文/潘曉璐 我一進店門篮绰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來后雷,“玉大人,你說我怎么就攤上這事吠各⊥瓮唬” “怎么了?”我有些...
    開封第一講書人閱讀 164,298評論 0 354
  • 文/不壞的土叔 我叫張陵贾漏,是天一觀的道長惧辈。 經(jīng)常有香客問我,道長磕瓷,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,586評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮困食,結(jié)果婚禮上边翁,老公的妹妹穿的比我還像新娘。我一直安慰自己硕盹,他們只是感情好符匾,可當(dāng)我...
    茶點故事閱讀 67,633評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著瘩例,像睡著了一般啊胶。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上垛贤,一...
    開封第一講書人閱讀 51,488評論 1 302
  • 那天焰坪,我揣著相機與錄音,去河邊找鬼聘惦。 笑死某饰,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的善绎。 我是一名探鬼主播黔漂,決...
    沈念sama閱讀 40,275評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼禀酱!你這毒婦竟也來了炬守?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,176評論 0 276
  • 序言:老撾萬榮一對情侶失蹤剂跟,失蹤者是張志新(化名)和其女友劉穎减途,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體浩聋,經(jīng)...
    沈念sama閱讀 45,619評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡观蜗,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,819評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了衣洁。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片墓捻。...
    茶點故事閱讀 39,932評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖坊夫,靈堂內(nèi)的尸體忽然破棺而出砖第,到底是詐尸還是另有隱情,我是刑警寧澤环凿,帶...
    沈念sama閱讀 35,655評論 5 346
  • 正文 年R本政府宣布梧兼,位于F島的核電站,受9級特大地震影響智听,放射性物質(zhì)發(fā)生泄漏羽杰。R本人自食惡果不足惜渡紫,卻給世界環(huán)境...
    茶點故事閱讀 41,265評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望考赛。 院中可真熱鬧惕澎,春花似錦、人聲如沸颜骤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽忍抽。三九已至八孝,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間鸠项,已是汗流浹背干跛。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留锈锤,地道東北人驯鳖。 一個月前我還...
    沈念sama閱讀 48,095評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像久免,于是被迫代替她去往敵國和親浅辙。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,884評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 顏色 導(dǎo)航條的屬性 translucent 可以控制導(dǎo)航條是否是透明的阎姥, 默認是YES记舆,也就是透明的。打開時透過導(dǎo)...
    SSBun閱讀 820評論 0 2
  • 在iOS中隨處都可以看到絢麗的動畫效果呼巴,實現(xiàn)這些動畫的過程并不復(fù)雜泽腮,今天將帶大家一窺iOS動畫全貌。在這里你可以看...
    F麥子閱讀 5,111評論 5 13
  • 在iOS中隨處都可以看到絢麗的動畫效果衣赶,實現(xiàn)這些動畫的過程并不復(fù)雜诊赊,今天將帶大家一窺ios動畫全貌。在這里你可以看...
    每天刷兩次牙閱讀 8,489評論 6 30
  • IOS的項目多數(shù)會遇到控制狀態(tài)欄和導(dǎo)航欄的問題府瞄,比如隱藏狀態(tài)欄碧磅、控制狀態(tài)欄的文字顏色等,導(dǎo)航欄也有同樣需求遵馆。本文總...
    YHWXQ簡簡單單的生活閱讀 1,725評論 1 8
  • 看了不少講教育的書鲸郊,也買了如何與孩子溝通之類的課程,仍舊在實踐中碰壁不斷货邓。今天聽到了芭學(xué)園的創(chuàng)始人李躍兒講孩子發(fā)展...
    王俊婷閱讀 365評論 0 0