1,import { findNodeHandle} from'react-native';
2,import{UIManager}from'NativeModules'
3,给组件添加 ref={(ref) =>this.myShow= ref} ref属性
4,
const handle = findNodeHandle(this.myShow);
UIManager.measure(handle,(x,y,width,height,pageX,pageY) => {
console.log(x,y,width,height,pageX,pageY);
});
==========等同于========
this.myShow.measure((x,y,width,height,pageX,pageY) => {
console.log(x,y,width,height,pageX,pageY);
});
//x、y:为视图的相对位置。width、height:为视图的宽度和高度。pageX、pageY为视图在屏幕上的绝对位置。(在android上有问题)可采取
onLayout={(e)=>layout = e.nativeEvent.layout} 这个属性在组件开始加载时就获取到
但是此方法不灵活,只适用于固定页面。相当于是取当前组件在屏幕中的绝对位置!!!一旦滚动就不适用!!!
=========或者========
import { UIManager, findNodeHandle } from 'react-native'
给需要获取的视图添加ref ==> ref={(ref) => this.doneBtn = ref}
需要获取时直接取值
UIManager.measure(findNodeHandle(this.doneBtn), (x, y, width, height, pageX, pageY) => {
this.scrollView.scrollTo({ x: 0, y: y- 50, animated: true });
});