在ios和重叠视图上调用或共享个人热点时状态栏高度是否发生变化,如何在状态栏高度发生变化时检测状态栏高度?
我遇到了这个挑战,并没有找到stackoverflow/github问题的答案.
我已经提出了自己的解决方案,并将其发布,这样可以为其他人节省一些时间.
import { NativeModules, StatusBarIOS } from 'react-native'
const { StatusBarManager } = NativeModules
componentDidMount () {
if (Platform.OS === 'ios') {
StatusBarManager.getHeight(response =>
this.setState({statusBarHeight: response.height})
)
this.listener = StatusBarIOS.addListener('statusBarFrameWillChange',
(statusBarData) =>
this.setState({statusBarHeight: statusBarData.frame.height})
)
}
}
componentWillUnmount () {
if (Platform.OS === 'ios' && this.listener) {
this.listener.remove()
}
}
Run Code Online (Sandbox Code Playgroud)
这个怎么运作
1)获取初始高度,注意它是异步方法
StatusBarManager.getHeight(response =>
this.setState({statusBarHeight: response.height}))
Run Code Online (Sandbox Code Playgroud)
2)设置监听器以更改状态栏
StatusBarIOS.addListener('statusBarFrameWillChange',
(statusBarData) =>
this.setState({statusBarHeight: statusBarData.frame.height})
)
Run Code Online (Sandbox Code Playgroud)
3)删除componentWillUnmount中的监听器
if (Platform.OS === 'ios' && this.listener) {
this.listener.remove()
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2780 次 |
| 最近记录: |