StatusBar : 电源、信号、蓝牙、wifi状态显示栏,也就是所谓的状态栏;
react native 也提供了StatusBar组件用来控制状态栏的字体颜色、背景颜色可以达到与app主题颜色一致效果, 同时也额外提供了隐藏、过度效果;
虽然android和ios的状态栏都有固定的高度,但是android的状态栏高度是block形式、而ios的状态栏高度是absolute方式;
block形式是指,非状态栏内容必须排在状态栏下面;
absolute形式是指,非状态栏内容默认是会与状态栏图标、状态栏文字产生重叠,由开发者自行margin-top或padding-top去留白;
注意事项:
android系统版本5无法设置状态栏背景颜色(对应的api是google 22api);
具体原因是, google在android系统版本6时才开放该接口(对应的api是 google 23api);
更改状态栏颜色
import React, { Component } from 'react';
import { AppRegistry, Text, View, StatusBar, StatusBarIOS, BackHandler } from 'react-native';
export default class BlinkApp extends Component {
render() {
return (
<View>
<StatusBar
/* android 5 不支持字体和背景颜色变更 */
backgroundColor="#FFBC95"
barStyle="dark-content"
/>
<Text>
Hello world!
</Text>
</View>
);
}
}
AppRegistry.registerComponent('myApp', () => BlinkApp);
参数介绍
backgroundColor: 背景颜色
barStyle: 字体颜色, 有三个选项: default、light-content和dark-content, default表示采用系统默认字体颜色, light-content表示采用白色字体, dark-content表示采用黑色字体.
隐藏状态栏
import React, { Component } from 'react';
import { AppRegistry, Text, View, StatusBar, StatusBarIOS, BackHandler } from 'react-native';
export default class BlinkApp extends Component {
render() {
return (
<View>
/* 隐藏状态栏 */
{StatusBar.setHidden(true, "slide")}
<Text>
Hello world!
</Text>
</View>
);
}
}
AppRegistry.registerComponent('myApp', () => BlinkApp);
介绍
这里移除了<StatusBar></StatusBar>是因为,该场景目的是隐藏状态栏,因此可以省略掉背景颜色和字体颜色的设置;
StatusBar.setHidden: 一个静态方法,用于隐藏状态栏, 第一个参数支持: true和false,true表示隐藏, false表示不隐藏, 默认是false; 第二个参数支持: none、fade和slide, none表示没有特效, fade表示渐现或渐隐, slide表示滑动;
其他参数
更多参数和方法请参考官网API介绍
总结
ios不支持背景颜色更改, 但是由于它状态栏是absolute的原因, 其实完全可以交给布局时预留marginTop或者paddingTop来设置该区域的颜色或者背景图等.