你如何在react-native中实现双指缩放?

Asp*_*pen 9 image-zoom ios reactjs react-native

我一直在研究PanResponder.我目前的工作假设是我会检测是否有两个向外移动的触摸,如果有,则增加onPanResponderMove函数中的元素大小.

这似乎是一种混乱的方式.有更顺畅的方式吗?

Rah*_*hul 9

如果您只需要简单的捏缩放功能,请使用ScrollView(doc在这里

只需根据需要提供maximumZoomScale(大于1)和minimumZoomScale

  • 这只是iOS,对吗?有没有办法让它在Android上正常工作? (9认同)

Fab*_*ioG 7

注意:此答案与平移响应器无关,而是解决了如何在 React Native 中实现捏合缩放的主要问题。

在没有 expo 的情况下使用 Expo 或 React-Native,您可以PinchGestureHandler从 react-native-gesture-handler导入。这里还有其他手势处理程序:react-native-gesture-handler

import { PinchGestureHandler } from 'react-native-gesture-handler';
Run Code Online (Sandbox Code Playgroud)

在示例中,假设我们正在使用相机并且我们想要检测缩放的捏合:

<PinchGestureHandler
    onGestureEvent={this.onPinchGestureEvent}
  >
    <View>
          <Camera
              type={cameraType}
              flashMode={flashMode}
              zoom={zoom}
              style={styles.preview}
              ref={camera => this.camera = camera}
          />
    </View>
        </PinchGestureHandler>
Run Code Online (Sandbox Code Playgroud)

然后我们可以像这样对手势事件采取行动:

   onPinchGestureEvent = event => {
      console.log(event.nativeEvent.scale);
    }
Run Code Online (Sandbox Code Playgroud)