控制iOS的導(dǎo)航欄和狀態(tài)欄的樣式

這是一個(gè)很常用的開(kāi)發(fā)場(chǎng)景,就是改變導(dǎo)航欄上的文字顏色與背景色案疲,如果你曾有 windows form 開(kāi)發(fā)經(jīng)驗(yàn)一定會(huì)笑我:“臥槽,這有什么好寫(xiě)的扛拨,不就是設(shè)置兩個(gè)屬性就可以了嗎?” 我以前也這樣認(rèn)為葱弟,但在iOS中這個(gè)過(guò)程是很落后的壹店,先來(lái)建立一個(gè)簡(jiǎn)單的帶有導(dǎo)航欄的項(xiàng)目,運(yùn)行效果是這樣的:

默認(rèn)效果

這個(gè)界面很不怎么樣芝加,至少很多情況下我們希望我們的APP在 導(dǎo)航欄上能顯示我們的主題色硅卢。

關(guān)于 UIColor

UIKit 的顏色類(lèi)(UIColor)是很難用的,而且系統(tǒng)顏色也非常有限。鑒于此得先寫(xiě)個(gè)直接輸入16進(jìn)制數(shù)就能得到顏色實(shí)例的函數(shù)藏杖,代碼如下所示:

func uiColorFromHex(rgbValue:UInt32)-> UIColor {
    let red = CGFloat((rgbValue & 0xFF0000) >> 16)/256.0
    let green = CGFloat((rgbValue & 0xFF00) >> 8)/256.0
    let blue = CGFloat(rgbValue & 0xFF)/256.0
    return UIColor(red:red, green:green, blue:blue, alpha:1.0)
}

改變導(dǎo)航欄的顏色

如果要統(tǒng)一地修改所有的導(dǎo)航欄的顏色将塑,那么就要在 AppDelegate.swift 文件內(nèi)的 didFinishLauchingWithOptions 方法內(nèi)處理。如果每個(gè)視圖都有各自的顏色設(shè)定那么就得在每個(gè) ViewController 內(nèi)的 viewDidLoaded 方法實(shí)現(xiàn)了蝌麸。

AppDelegate.swift 的代碼如下:

let navigationBarAppearance = UINavigationBar.appearance()

navigationBarApparance.barTintColor = uiColorFromHex(0x007AFF)
navigationBarApparance.tintColor = uiColorFromHex(0xFFFFFF)
  • barTintColor 屬性是用于改變導(dǎo)航欄的背景色点寥。(臥槽!Apple 的命名果然還是一如既往的“好”啊来吩,用 backgroundColor 就不用附加說(shuō)明了开财,真難以里解這個(gè)屬性被命名時(shí)這個(gè)程序員腦子是怎么想的汉柒。 )
  • tintColor (另一個(gè)更讓人抓狂的屬性名)屬性控制:
    • 按鈕標(biāo)題
    • 左/右按鈕圖型
645016-20151105153705008-1016942.png

此時(shí),你會(huì)發(fā)現(xiàn)導(dǎo)航欄中的文字仍然默認(rèn)的黑色责鳍,如果我們想這個(gè)文字也能變成白色那么并不是粗暴直接設(shè)置文字顏色碾褂,當(dāng)然如果要這么做的話可以設(shè)置 navigationBarAppearance.titleTextAttributes 屬性實(shí)現(xiàn)。但另一個(gè)更好的辦法是更改導(dǎo)航欄的樣式:

navigationBarApparance.barStyle = UIBarStyle.Black

這個(gè) UIBarStyle.Black 的原文解釋是這樣的:

Use a black background with light content.

好吧历葛,我們可以直接理解為將背景透明化吧正塌。(這種文檔實(shí)在是糟透了)

Anyway 至少現(xiàn)在已經(jīng)接近我們所需要的效果了。

645016-20151105153716102-1356325875.png

剩下來(lái)就是上方那個(gè)占高24pt 狀態(tài)欄顏色還是默認(rèn)的黑色恤溶, 我們還得將它給換過(guò)來(lái)乓诽。被前面的代碼給折磨過(guò)后,思路上就是一樣的 “l(fā)ight content”

我們就在設(shè)置導(dǎo)航欄后加入以下的代碼:

UIApplication.sharedApplication().statusBarStyle = UIStatusBarStyle.LightContent

最后還得做點(diǎn)點(diǎn)小修改咒程,用源代碼編輯器打開(kāi) Info.plist 文件鸠天,然后加入以下的代碼

<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>

禁止掉使用默認(rèn)的狀態(tài)欄樣式。

PList

好了帐姻,這就是我們所需要的最終效果稠集。

最終效果

為了大家方便閱讀,我將整個(gè)方法的代碼也貼出來(lái):

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

    let navigationBarApparance = UINavigationBar.appearance()
    
    navigationBarApparance.barTintColor = uiColorFromHex(0x007AFF)
    navigationBarApparance.tintColor = uiColorFromHex(0xFFFFFF)
    
    navigationBarApparance.barStyle = UIBarStyle.Black

    UIApplication.sharedApplication().statusBarStyle = UIStatusBarStyle.LightContent
      
    return true
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末饥瓷,一起剝皮案震驚了整個(gè)濱河市剥纷,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌呢铆,老刑警劉巖晦鞋,帶你破解...
    沈念sama閱讀 221,406評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異棺克,居然都是意外死亡悠垛,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,395評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門(mén)娜谊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)确买,“玉大人,你說(shuō)我怎么就攤上這事因俐。” “怎么了周偎?”我有些...
    開(kāi)封第一講書(shū)人閱讀 167,815評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵抹剩,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我蓉坎,道長(zhǎng)澳眷,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,537評(píng)論 1 296
  • 正文 為了忘掉前任蛉艾,我火速辦了婚禮钳踊,結(jié)果婚禮上衷敌,老公的妹妹穿的比我還像新娘。我一直安慰自己拓瞪,他們只是感情好缴罗,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,536評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著祭埂,像睡著了一般面氓。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蛆橡,一...
    開(kāi)封第一講書(shū)人閱讀 52,184評(píng)論 1 308
  • 那天舌界,我揣著相機(jī)與錄音,去河邊找鬼泰演。 笑死呻拌,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的睦焕。 我是一名探鬼主播藐握,決...
    沈念sama閱讀 40,776評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼复亏!你這毒婦竟也來(lái)了趾娃?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,668評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤缔御,失蹤者是張志新(化名)和其女友劉穎抬闷,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體耕突,經(jīng)...
    沈念sama閱讀 46,212評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡笤成,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,299評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了眷茁。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片炕泳。...
    茶點(diǎn)故事閱讀 40,438評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖上祈,靈堂內(nèi)的尸體忽然破棺而出培遵,到底是詐尸還是另有隱情,我是刑警寧澤登刺,帶...
    沈念sama閱讀 36,128評(píng)論 5 349
  • 正文 年R本政府宣布籽腕,位于F島的核電站,受9級(jí)特大地震影響纸俭,放射性物質(zhì)發(fā)生泄漏皇耗。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,807評(píng)論 3 333
  • 文/蒙蒙 一揍很、第九天 我趴在偏房一處隱蔽的房頂上張望郎楼。 院中可真熱鬧万伤,春花似錦、人聲如沸呜袁。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,279評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)傅寡。三九已至放妈,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間荐操,已是汗流浹背芜抒。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,395評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留托启,地道東北人宅倒。 一個(gè)月前我還...
    沈念sama閱讀 48,827評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像屯耸,于是被迫代替她去往敵國(guó)和親拐迁。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,446評(píng)論 2 359

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