在本机iOS本机代码中是否有一个地方可以修改以设置iOS状态栏backgroundColor? RCTRootView.m?
react native StatusBar component仅支持Android的 backgroundColor 。
iOS operating system seems to allow setting status bar backgroundColor
答案 0 :(得分:136)
iOS没有状态栏bg的概念。以下是您如何以跨平台的方式实现这一目标:
import React, {
Component,
} from 'react';
import {
AppRegistry,
StyleSheet,
View,
StatusBar,
Platform,
} from 'react-native';
const MyStatusBar = ({backgroundColor, ...props}) => (
<View style={[styles.statusBar, { backgroundColor }]}>
<StatusBar translucent backgroundColor={backgroundColor} {...props} />
</View>
);
class DarkTheme extends Component {
render() {
return (
<View style={styles.container}>
<MyStatusBar backgroundColor="#5E8D48" barStyle="light-content" />
<View style={styles.appBar} />
<View style={styles.content} />
</View>
);
}
}
const STATUSBAR_HEIGHT = Platform.OS === 'ios' ? 20 : StatusBar.currentHeight;
const APPBAR_HEIGHT = Platform.OS === 'ios' ? 44 : 56;
const styles = StyleSheet.create({
container: {
flex: 1,
},
statusBar: {
height: STATUSBAR_HEIGHT,
},
appBar: {
backgroundColor:'#79B45D',
height: APPBAR_HEIGHT,
},
content: {
flex: 1,
backgroundColor: '#33373B',
},
});
AppRegistry.registerComponent('App', () => DarkTheme);
{{3}}
答案 1 :(得分:33)
将import { StatusBar } from 'react-native';
添加到app.js
的顶部,然后将StatusBar.setBarStyle('light-content', true);
添加为render()
的第一行,将状态栏文字/图标更改为白色。< / p>
其他颜色选项为'default'
和'dark-content'
。
有关详细信息,请参阅https://facebook.github.io/react-native/docs/statusbar.html。
除此之外:不,你必须按照你提供的链接。
答案 2 :(得分:2)
如果您使用的是react-native-navigation,则需要:
1-)将其添加到info.plist文件中:
<key>UIViewControllerBasedStatusBarAppearance</key>
<string>YES</string>
2-)在render()
函数的第一行,例如:
render(){
this.props.navigator.setStyle({
statusBarTextColorScheme: 'light'
});
return (
<Login navigator={this.props.navigator}></Login>
);
}
答案 3 :(得分:2)
render() {
let { email, password, isLoading } = this.state
return (
<View style={{ flex: 1, }}>
<StatusBar
translucent
barStyle="light-content"
// backgroundColor="rgba(0, 0, 0, 0.251)"
backgroundColor='magenta'
/>
</View>
)
}
答案 4 :(得分:0)
在react-native中设置iOS和Android状态栏backgroundColor
import React, { Component } from 'react';
import { Platform, StyleSheet, View, StatusBar } from 'react-native';
import Constants from 'expo-constants';
class Statusbar extends Component {
render() {
return (
<View style={styles.StatusBar}>
<StatusBar translucent barStyle="light-content" />
</View>
);
}
}
const styles = StyleSheet.create({
StatusBar: {
height: Constants.statusBarHeight,
backgroundColor: 'rgba(22,7,92,1)'
}
});
export default Statusbar;
答案 5 :(得分:0)
添加到根视图。 (如果有,则退出SafeAreaView)
{Platform.OS === 'ios' &&
<View style={{
width: "100%",
height: 100, // For all devices, even X, XS Max
position: 'absolute',
top: 0,
left: 0,
backgroundColor: "red"}}
/>}
// App screen
...
答案 6 :(得分:0)
import {SafeAreaConsumer} from 'react-native-safe-area-context';
<SafeAreaConsumer>
{(insets)=>(
<View style={{flex:1}}>
<View style={{height:insets.top ,backgroundColor :"black"}}/>
<StatusBar barStyle="light-content"/>
<View style={{flex:1}}>
<Text>My Text</Text>
</View>
</View>
)}
</SafeAreaConsumer>
答案 7 :(得分:0)
您需要对其进行自定义。
如果您使用 reac-native
改为使用 react-native-safe-area-context 并对其进行自定义。
看到这个snack。
答案 8 :(得分:0)
我能够更改 iOS 上状态栏的背景颜色,但更新了 backgroundColor
组件的 SafeAreaView
属性。
<SafeAreaView style={{backgroundColor: 'blue'}}>
// App Content
</SafeAreaView>