如果您使用 Expo,您可以使用 Constants.statusBarHeight。
import Constants from 'expo-constants';
const statusBarHeight = Constants.statusBarHeight;
如果您使用带有 React Navigation 的 Vanilla React Native,您可以使用以下内容:
import { useSafeAreaInsets } from 'react-native-safe-area-context';
const insets = useSafeAreaInsets();
const statusBarHeight = insets.top;
见:https://reactnavigation.org/docs/handling-safe-area/#use-the-hook-for-more-control
示例代码:
import * as React from 'react';
import { Text, View, StatusBar } from 'react-native';
import Constants from 'expo-constants';
import { useSafeAreaInsets, SafeAreaProvider } from 'react-native-safe-area-context';
export default function App() {
return (
<SafeAreaProvider>
<ChildScreen />
</SafeAreaProvider>
);
}
function ChildScreen() {
const insets = useSafeAreaInsets();
return (
<View style={{ flex: 1, justifyContent: 'center'}}>
<Text>
{insets.top}
</Text>
<Text>
{Constants.statusBarHeight}
</Text>
<Text>
{StatusBar.currentHeight ?? 'N/A'}
</Text>
</View>
);
}
输出:
|
Samsung Galaxy S10 5G |
iPhone 8 Plus |
iPhone 11 Pro Max |
Web |
insets.top |
39.71428680419922 |
20 |
44 |
0 |
Constants.statusBarHeight |
39 |
20 |
44 |
0 |
StatusBar.currentHeight ?? 'N/A' |
39.42856979370117 |
N/A |
N/A |
N/A |
直播代码:https://snack.expo.dev/@dcangulo/statusbarheight