react native 组件要获取组件在当前屏幕上的绝对位置一般都是通measure
方法如下:
<View ref = "ref1"/>
ref1.measure((frameX, frameY, frameWidth, frameHeight, pageX, pageY) => {
//pageX,pageY就是绝对位置
});
但这个如果组件是自定义组件话就会找不报找不到measure函数,这个问题一切困扰着我,目前我只找到另一种替代方法,至于为什么我没有时间去深究。
下面就是给个更加通用解决方案
<MyComponent onLayout={(e)=>this._onLayout(e)}/>
//import {NativeModules} from 'react-native';
_onLayout = (e) =>{
NativeModules.UIManager.measure(e.target, (x, y, width, height, pageX, pageY) => {
this.currentPosY = pageY;
// pageY是组件在当前屏幕上的绝对位置
console.log(x,y);
console.log(pageX,pageY);
});
}
e是事件源对象,一般的事件都这个对象,比如onFoucs,onBlur,onLayout之类的。