You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在React Native(iOS/Web)实现可拖拽、缩放、移动、删除的矩形并记录坐标?

React Native(兼容iOS/Web)拖拽绘制可编辑矩形的方案求助

我需要在同时支持iOS和Web的React Native项目中实现以下功能:

  • 通过拖拽操作绘制矩形
  • 绘制完成后可调整矩形的大小
  • 能够移动矩形至任意位置
  • 必要时可删除矩形
  • 记录每个矩形的坐标信息

我了解到react-konva可以完美实现这类图形编辑功能,但它仅适配Web端React,无法兼容React Native。目前我尝试使用react-native-gesture-handler来实现,但效果远达不到预期,相关代码如下:

import React, { useState } from 'react';
import { View, StyleSheet, TouchableOpacity, Text, Platform } from 'react-native';
import Svg, { Circle, Polygon } from 'react-native-svg';
import { GestureEvent, PanGestureHandler, PanGestureHandlerEventPayload } from 'react-native-gesture-handler';

const DrawRectangle = () => {
  const [start, setStart] = useState(null);
  const [end, setEnd] = useState({ x: 0, y: 0 });
  const [dimensions, setDimensions] = useState({ w: 0, h: 0 });

  const onPress = (event) => {
    const { x, y, translationX, translationY } = event.nativeEvent;
    if (!start) setStart({ x: y, y: x });
    setDimensions({ w: translationX, h: translationY });
  };

  const onEnd = () => {
    if (!start) return;

    setEnd(start);
    setStart(null);
  };

  return (
    <View style={{ flex: 1 }}>
      <PanGestureHandler onGestureEvent={onPress} onEnded={onEnd}>
        <View style={{ width: '100%', height: '100%', backgroundColor: 'red' }}>
          <View
            style={{
              position: 'absolute',
              backgroundColor: 'blue',
              top: start?.x ?? end?.x,
              left: start?.y ?? end?.y,
              width: dimensions?.w ?? 0,
              height: dimensions?.h ?? 0
            }}
          />
        </View>
      </PanGestureHandler>
    </View>
  );
};

export default DrawRectangle;

恳请推荐适用于React Native(同时支持iOS和Web)的同类库或可行的实现方法,感谢帮助!

内容的提问来源于stack exchange,提问作者Roman Uk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 16:46:20