StatusBarIOS 有一个方法addListener可以让我们监听状态栏高度的变化,如下所示:
StatusBarIOS.addListener('statusBarFrameWillChange', (statusBarData) => {
this.setState({statusBarHeight: statusBarData.frame.height});
});
Run Code Online (Sandbox Code Playgroud)
StatusBarIOS 已弃用,并显示代码已合并到 StatusBar 的消息
我们如何收听该statusBarFrameWillChange事件?
您可以使用该NativeEventEmitter模块,这是一个使用该模块获取状态栏高度的react hook的示例。
import React, { useState, useEffect } from 'react';
import { NativeEventEmitter, NativeModules } from 'react-native';
const { StatusBarManager } = NativeModules;
export default function useStatusBarHeight() {
const [value, setValue] = useState();
useEffect(() => {
const emitter = new NativeEventEmitter(StatusBarManager);
StatusBarManager.getHeight((statusBarFrameData) => setValue(statusBarFrameData.height));
const listener = emitter.addListener('statusBarFrameWillChange', (data) => setValue(data.frame.height));
return () => listener.remove();
}, []);
return value;
}
Run Code Online (Sandbox Code Playgroud)
此代码片段还使用 StatusBarManager 来获取初始高度。
| 归档时间: |
|
| 查看次数: |
452 次 |
| 最近记录: |