react-native 的狀態(tài)欄

其實(shí)對于 react-native 來說菠红,官方自帶的 StatusBar 已經(jīng)足夠使用了第岖。
iOS 系統(tǒng)的狀態(tài)欄是比較好設(shè)置的,Android 4.4 之后才能支持對狀態(tài)欄的適配试溯。本來 Android 是有點(diǎn)難處理的蔑滓,但是就目前國內(nèi) Android 機(jī)器的系統(tǒng)版本分布來說,最低適配到 4.4 也就是 19 完全是可以的遇绞。
騰訊數(shù)據(jù)分析 的統(tǒng)計都已經(jīng)直接從 4.4 開始統(tǒng)計了键袱,所以完全沒有必要支持 4.4 以下的系統(tǒng)了。


那么 RN 如何適配狀態(tài)欄呢摹闽?
對于 RN 應(yīng)用來說蹄咖,基本都會使用 StackNavigation 做為整個 APP 的導(dǎo)航。本文也是基于這個钩骇,做的狀態(tài)欄適配比藻。

一:創(chuàng)建一個 StackNavigation

見代碼
const StackNavigation = StackNavigator({ Root: { screen: HelloPage, }, AppNavigation: { screen: AppNavigation }, OrderDetail: { screen: OrderDetailScreen, navigationOptions: { title: "訂單詳情", }, });

二: 監(jiān)聽 screen 的切換

<AppNavigation onNavigationStateChange={_onNavigationStateChange}/>

三: 創(chuàng)建_onNavigationStateChange函數(shù)

getCurrentRouteName 函數(shù),供 _onNavigationStateChange 調(diào)用
function getCurrentRouteName(navigationState) { if (!navigationState) { return null; } const route = navigationState.routes[navigationState.index]; console.log("navigationState.index=" + navigationState.index); console.log("route.routeName=" + route.routeName); // dive into nested navigators if (route.routes) { return getCurrentRouteName(route); } return route.routeName; }


function _onNavigationStateChange(prevState, currentState , action) { const currentScene = getCurrentRouteName(currentState); // const previousScene = getCurrentRouteName(prevState); StatusBar.setHidden(false); switch (currentScene) { case "ProfileScreen": case "OrderScreen": StatusBar.setHidden(false); StatusBar.setBarStyle("light-content", true); if (Platform.OS === "android") { StatusBar.setBackgroundColor(colors.topBar, true); StatusBar.setTranslucent(true); } break; default: StatusBar.setHidden(false); StatusBar.setBarStyle("dark-content", true); if (Platform.OS === "android") { StatusBar.setBackgroundColor("white", true); StatusBar.setTranslucent(true); } break; } }
_onNavigationStateChange 是主要處理邏輯的地方倘屹。
你可以在 switch 語句中根據(jù) StackNavigator 中配置的 screen 名稱银亲,對界面的狀態(tài)欄做統(tǒng)一的處理。

注意:由于 _onNavigationStateChange 只有在 screen 變化的時候才會有效纽匙,所以應(yīng)用的第一個界面是不能在這里進(jìn)行配置的务蝠。

如果需要對第一個界面的狀態(tài)欄做配置,或者對任何一個界面做狀態(tài)欄的設(shè)置烛缔,我建議是在 componentDidMount 中配置馏段。如果是在 render, 那么當(dāng)界面刷新的時候,會造成狀態(tài)欄的閃爍践瓷。


代碼格式挺亂的院喜,自己 COPY 下來整理下,應(yīng)該還是挺好懂的晕翠。
整個的思路很簡單喷舀,等我閑下來了砍濒,會整理下,順便發(fā)布 Demo 的硫麻。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末爸邢,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子拿愧,更是在濱河造成了極大的恐慌杠河,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,639評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件浇辜,死亡現(xiàn)場離奇詭異券敌,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)奢赂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評論 3 385
  • 文/潘曉璐 我一進(jìn)店門陪白,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人膳灶,你說我怎么就攤上這事×⒂桑” “怎么了轧钓?”我有些...
    開封第一講書人閱讀 157,221評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長锐膜。 經(jīng)常有香客問我毕箍,道長,這世上最難降的妖魔是什么道盏? 我笑而不...
    開封第一講書人閱讀 56,474評論 1 283
  • 正文 為了忘掉前任而柑,我火速辦了婚禮,結(jié)果婚禮上荷逞,老公的妹妹穿的比我還像新娘媒咳。我一直安慰自己,他們只是感情好种远,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,570評論 6 386
  • 文/花漫 我一把揭開白布涩澡。 她就那樣靜靜地躺著,像睡著了一般坠敷。 火紅的嫁衣襯著肌膚如雪妙同。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,816評論 1 290
  • 那天膝迎,我揣著相機(jī)與錄音粥帚,去河邊找鬼。 笑死限次,一個胖子當(dāng)著我的面吹牛芒涡,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 38,957評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼拖陆,長吁一口氣:“原來是場噩夢啊……” “哼弛槐!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起依啰,我...
    開封第一講書人閱讀 37,718評論 0 266
  • 序言:老撾萬榮一對情侶失蹤乎串,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后速警,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體叹誉,經(jīng)...
    沈念sama閱讀 44,176評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,511評論 2 327
  • 正文 我和宋清朗相戀三年闷旧,在試婚紗的時候發(fā)現(xiàn)自己被綠了长豁。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,646評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡忙灼,死狀恐怖匠襟,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情该园,我是刑警寧澤酸舍,帶...
    沈念sama閱讀 34,322評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站里初,受9級特大地震影響啃勉,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜双妨,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,934評論 3 313
  • 文/蒙蒙 一淮阐、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧刁品,春花似錦泣特、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至镀裤,卻和暖如春竞阐,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背暑劝。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評論 1 266
  • 我被黑心中介騙來泰國打工骆莹, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人担猛。 一個月前我還...
    沈念sama閱讀 46,358評論 2 360
  • 正文 我出身青樓幕垦,卻偏偏與公主長得像丢氢,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子先改,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,514評論 2 348

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

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,777評論 25 707
  • 走遍大江南北疚察,最怕宣威人說普通話。昨天第一次主持仇奶,真正下定決心來學(xué)好普通話貌嫡。其實(shí),之前一直也想把普通話學(xué)好该溯,...
    宣威018吳桂芳閱讀 883評論 14 14
  • 我是卓佐岛抄,這是我每天一篇原創(chuàng)文章NO.33 何為教養(yǎng)?我認(rèn)為不亂給他人取綽號就是教養(yǎng)中的其中一項(xiàng)狈茉。 四...
    迎慶心烘焙閱讀 204評論 0 1
  • 早上一頓收拾夫椭,兩個桃一個獼猴桃 買的面包也忘記拿。氯庆。蹭秋。。堤撵。 明天回家體重不要長案蟹铩!A6健!禽翼! 中午十元餐 下午葡萄很多...
    LandingGuys閱讀 107評論 0 0
  • 當(dāng)我看到這些"爆文"的時候屠橄,他們的才華讓我深深的折服,不知道大家會不會被 這些"爆文"所驚爆呢! 用8只字就描述完...
    我總是著急閱讀 1,499評論 0 0