全網(wǎng)首發(fā) iOS自定義statusbar上icon的顏色

先上github ??WELCustomStatusbarColor

大概就是這樣


我必須先說一句,iOS的statusbar的顏色默認只有黑和白,我相信這樣的設計自然有其原因辨液。而非黑&白的配色設計也同樣有其原因靠瞎,對吧?

接著說寫這個項目的動機唉工。起初研乒,只是想獲取statusbar的TouchUP事件。在所有已知的常規(guī)方法的都能解決的情況下淋硝,我決定去私有層看看雹熬。當然宽菜,這個簡單的需求自然是很快便解決了。而已然進入了私有層竿报,作這么個小東西還不是很過癮铅乡,必須要干點什么事出來。于是就有了這個項目烈菌。

只需要閱讀其頭文件阵幸,再加上下幾的斷點,就找到了對應的方案芽世。

大概流程就是:bar上的東西最后都會作為UIImag傳給bar(具體的實現(xiàn)比這個復雜一些)挚赊,鉤這個方法,把圖片渲染成相應的顏色济瓢。而需要改顏色的時候荠割,調(diào)用setNeedsStatusBarAppearanceUpdate就可以了。

真實開發(fā)中應該不會遇見這種需求旺矾,不過做這個項目的邏輯卻是經(jīng)常會用到的涨共,尤其是遇見一些惡心的需求,可以幫我們省下大量的時間宠漩。我會在接下來的幾篇文中為大家介紹我在項目中是怎么用runtime解決問題的举反。希望可以為諸位帶來幫助。

## Update?

再更新幾個關于statusbar的知識扒吁,算是需求經(jīng)常會遇見的火鼻。

1 view怎么遮擋statusbar

當你彈出一個全屏的半透明黑色蒙版并且statusbar是白色的時候,這個問題就是你需要考慮的了雕崩。

不注意的話魁索,可能就會做成這樣


在我司,半透明蒙版擋不住bar絕逼是不能上架的....


2 怎么更改statusbar的背景色

當你的scrollView滑動的同時會隱藏navBar的時候盼铁,這個問題你可能會遇到粗蔚。

幾年前蠢的很,在上面放了20pt高的view饶火。不過顯然有簡單的辦法鹏控。

大概是這么個需求

3 怎么自由改statusbar的Frame

這個就不放圖了,腦補scrollView和statusbar一起比翼齊飛的效果肤寝。


先想了這么幾個問題当辐,下面一一解答。

首先鲤看,statusbar到底是個什么東西呢缘揪?

打開開發(fā)利器 iOS-Runtime-Headers 閱讀UIApplication的頭文件,可以發(fā)現(xiàn)UIApplication有一個名為statusBar的屬性。

獲取之找筝, po之蹈垢,可以發(fā)現(xiàn)如下信息:


也就是說,其實statusBar就是個view袖裕。

繼續(xù)po曹抬,可以發(fā)現(xiàn)如下信息:


到這里,事實已經(jīng)很明顯了陆赋。

有一個類型為UIStatusBarWindow的window被UIApplication的單例強引用沐祷,在這個window上面add了statusbar這個View。

如果調(diào)用下面這句代碼

[[UIApplication sharedApplication] setValue:nil forKey:@"_statusBarWindow"];

會發(fā)現(xiàn)app的statusbar沒有了攒岛,原因很簡單赖临,一個window的引用計數(shù)器為0的時候,便會被系統(tǒng)干掉灾锯。

有了這些認識兢榨,我們可以回答上面的問題了。

先說window顺饮,UIStatusBarWindow的windowLevel是1000吵聪,等于UIWindowLevelStatusBar。

(UIWindowLevelNormal == 0; UIWindowLevelAlert == 2000)

要想遮擋statusbar兼雄,只需要把顯示用的view加到windowLevel > 1000的window上顯示吟逝。

當然,不光是視覺上遮擋赦肋,statusbar的手勢也會被遮擋块攒。這個特性有時候可能會很有用,比如我這正在做的一個項目佃乘,有個頁面是彈出一個卡片囱井,卡片距離屏幕頂部只有50pt左右,需求希望可以通過點擊頂部消失卡片趣避。如果這個卡片加在NormalLevel的window上庞呕,那么點擊頂部有一半幾率會點到statusbar上,效果就很不理想程帕。這時候放在AlertLevel的window上就很合適住练。

既然statusbar是個View,那理論上view可以做的骆捧,statusbar也可以做澎羞。

比如 改背景顏色這樣就可以實現(xiàn)。改frame同理敛苇。

UIView *statusbar = [[UIApplication sharedApplication] valueForKey:@"statusBar"];

statusbar.backgroundColor= [UIColor redColor];


如果大家還有什么關于statusbar的問題,可以在評論里留言,我會一一解答枫攀。

感謝閱讀括饶!

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市来涨,隨后出現(xiàn)的幾起案子图焰,更是在濱河造成了極大的恐慌,老刑警劉巖蹦掐,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件技羔,死亡現(xiàn)場離奇詭異,居然都是意外死亡卧抗,警方通過查閱死者的電腦和手機藤滥,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來社裆,“玉大人拙绊,你說我怎么就攤上這事∮拘悖” “怎么了标沪?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長嗜傅。 經(jīng)常有香客問我金句,道長,這世上最難降的妖魔是什么吕嘀? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任违寞,我火速辦了婚禮,結果婚禮上币他,老公的妹妹穿的比我還像新娘坞靶。我一直安慰自己,他們只是感情好蝴悉,可當我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布彰阴。 她就那樣靜靜地躺著,像睡著了一般拍冠。 火紅的嫁衣襯著肌膚如雪尿这。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天庆杜,我揣著相機與錄音射众,去河邊找鬼。 笑死晃财,一個胖子當著我的面吹牛叨橱,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼罗洗,長吁一口氣:“原來是場噩夢啊……” “哼愉舔!你這毒婦竟也來了?” 一聲冷哼從身側響起伙菜,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤轩缤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后贩绕,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體火的,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年淑倾,在試婚紗的時候發(fā)現(xiàn)自己被綠了馏鹤。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡踊淳,死狀恐怖假瞬,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情迂尝,我是刑警寧澤脱茉,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站垄开,受9級特大地震影響琴许,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望昨稼。 院中可真熱鬧讹开,春花似錦蹦狂、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽辩块。三九已至,卻和暖如春荆永,著一層夾襖步出監(jiān)牢的瞬間废亭,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工具钥, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留豆村,地道東北人。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓骂删,卻偏偏與公主長得像掌动,于是被迫代替她去往敵國和親四啰。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,577評論 2 353

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

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,071評論 25 707
  • 《我的散文集》目錄 今天是2017年8月9號坏匪,很久很久沒有你的任何消息了拟逮。 我有時會幻想在某...
    瀟湘月明閱讀 349評論 10 8
  • 窗外的雨嘀嗒滴滴 思緒回到過去 記憶的光影 慢慢靠近 你問 大海是否也有遠方 我出神的望 心不知飛向哪里 當...
    言一JAYI閱讀 142評論 0 0
  • 馬上二十三撬统,沒有談過一次戀愛适滓,有暗戀過,表白過恋追,不過現(xiàn)在我們是朋友凭迹,可能彼此都覺得朋友會更好,他迄今為止算是我...
    多肉變瘦了閱讀 144評論 0 1
  • 文/夏木兮 1. 前幾天和朋友聊天苦囱。 朋友說:“你知道嗎嗅绸?有天打開微信,在列表里找爸爸的微信號時撕彤,發(fā)過去的信息鱼鸠,上...
    夏木兮閱讀 1,381評論 4 6