我试图在单击图像时使用触摸事件位置开始从该位置到屏幕中心的图像动画。
当 React Native 全屏显示时,这不是问题。但是当 React Native 在混合应用程序中运行并且 React Native 渲染的屏幕没有占据整个屏幕时(比如在拆分视图模式下,或者在 iPad 上的弹出视图中),nativeEvent
坐标都是相对于视图的React Native 正在渲染的地方,而不是实际的屏幕。
我想获得触摸发生的实际屏幕坐标。有什么解决方法可以做到这一点吗?
从手势响应系统的文档中,所有事件都与根元素相关。我认为这意味着 react native 的根元素。
我做了一些实验,react nativeDimensions
确实给了我正确的屏幕尺寸。我首先考虑使用它来计算 React Native 屏幕渲染位置的偏移量。但是,仅凭这些数据,我真的无法知道视图的顶部/底部/左侧/右侧有多少间距。
弄清楚了。
当 React Native 在混合应用程序的子视图中运行时,我可以使用measureInWindow 计算出实际的屏幕坐标。
onPress = () => {
this.refs.button.measureInWindow((x, y, width, height) => {
console.log("x", x, "y", y);
})
}
render() {
<TouchableOpacity ref="button" onPress={this.onPress}>
...
</TouchableOpacity>
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句