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()
}
}
怎么运行的
1)获取初始高度,注意它是异步方法
StatusBarManager.getHeight(response =>
this.setState({statusBarHeight: response.height}))
2)设置状态栏变化监听器
StatusBarIOS.addListener('statusBarFrameWillChange',
(statusBarData) =>
this.setState({statusBarHeight: statusBarData.frame.height})
)
3) 删除 componentWillUnmount 中的监听器
if (Platform.OS === 'ios' && this.listener) {
this.listener.remove()
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)