Last active
July 2, 2024 19:40
-
-
Save ecklf/dc8dee4e1c9b8cd8011199416176fb3e to your computer and use it in GitHub Desktop.
Determine the current status bar height. This is useful to determine keyboardVerticalOffset for KeyboardAvoidingView, since iPhone X and newer use different dimensions.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import { useEffect, useState } from "react"; | |
import { | |
NativeEventEmitter, | |
NativeModules, | |
Platform, | |
StatusBar, | |
} from "react-native"; | |
const { StatusBarManager } = NativeModules; | |
export default function useStatusBarHeight() { | |
const [value, setValue] = useState(StatusBar.currentHeight || 0); | |
useEffect(() => { | |
if (Platform.OS !== "ios") return; | |
const emitter = new NativeEventEmitter(StatusBarManager); | |
StatusBarManager.getHeight(({ height }: { height: number }) => { | |
setValue(height); | |
}); | |
const listener = emitter.addListener("statusBarFrameWillChange", (data) => | |
setValue(data.frame.height), | |
); | |
return () => listener.remove(); | |
}, []); | |
return value; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
This works also: