StatusBar組件是對狀態(tài)欄進行設置的組件,設置自定義狀態(tài)欄,可以提高應用美觀,讓用戶在沉浸式的應用中體驗量没。
主要屬性有:
-
backgroundColor
狀態(tài)欄顏色,僅android -
barStyle
狀態(tài)欄文本顏色亿鲜,Android僅支持6.0及以上版本允蜈,enum('default', 'light-content', 'dark-content')
-
translucent
指定狀態(tài)欄是否透明。設置為 true 時蒿柳,應用會延伸到狀態(tài)欄之下繪制(即所謂“沉浸式”——被狀態(tài)欄遮住一部分)饶套。常和帶有半透明背景色的狀態(tài)欄搭配使用,僅android -
animated
指定狀態(tài)欄的變化是否應以動畫形式呈現(xiàn)垒探。目前支持這幾種樣式:backgroundColor, barStyle 和 hidden -
hidden
是否隱藏狀態(tài)欄 -
networkActivityIndicatorVisible
指定是否顯示網絡活動提示符,僅ios -
showHideTransition
通過hidden
屬性來顯示或隱藏狀態(tài)欄時所使用的動畫效果妓蛮。默認值為'fade',還有'slide'值圾叼,僅ios
本文重點描述translucent
產生的問題進行概括蛤克。
由于設置translucent=true
時,應用頁面會延伸到狀態(tài)欄之下繪制夷蚊,也就是說构挤,如果是一張圖片,那么在狀態(tài)欄之下顯示圖片惕鼓,而默認的都是狀態(tài)欄下進行繪制.
在應用中發(fā)生了畫面跳動的現(xiàn)象筋现,如下視頻:
發(fā)生畫面跳動的視頻
可以看出,每次從Discover
頁面跳轉到Profile
箱歧,或從Profile
頁面跳轉到Discover
頁面時矾飞,總會出現(xiàn)頁面向下或向上繪制。
經過測試呀邢,發(fā)現(xiàn)Discover
頁面中StartBar
組件的沒有設置traslucent
屬性洒沦,而Profile
頁面則設置了translucent={true}
和backgroundColor='transparent'
兩個屬性,所以導致了每次切換都要重新繪制狀態(tài)欄的高度价淌,導致了問題申眼。
此問題僅僅出現(xiàn)在Android設備端瞒津,所以最終采取了,在Profile
頁面設置:
<StatusBar
barStyle="light-content"
backgroundColor="#000"
/>
去掉了translucent
屬性豺型。
因為Profile
頁面的畫頂部正好趨向黑色仲智,所以在此直接設置了黑色,最終的結果是好的姻氨。
如下視頻:修改之后的視頻