微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

拖动使用Vstack和Hstack创建的网格的单个单元格

如何解决拖动使用Vstack和Hstack创建的网格的单个单元格

我有以下代码创建了一个网格,并使用数组中的字符填充它。我已经添加了手势代码,但是它可以在整个网格上拖动,而不是在单个单元格上拖动。

import SwiftUI

struct GridStack<Content: View>: View {
    let rows: Int
    let columns: Int
    let content: (Int,Int) -> Content
    @State private var currentPosition: CGSize = .zero
    @State private var oldPosition: CGSize = .zero
    @State private var newPosition: CGSize = .zero
    var body: some View {
        vstack {
            ForEach(0 ..< rows,id: \.self) { row in
                HStack(spacing: 0) {
                    ForEach(0 ..< self.columns,id: \.self) { column in
                        self.content(row,column).font(.custom("Rockwell",size:24)).frame(width: 30,height: 30).padding()
                    }.border(Color.gray)
                        .offset(x: self.currentPosition.width,y: self.currentPosition.height)
                    .gesture(DragGesture()
                        .onChanged { value in
                            self.currentPosition = CGSize(width: value.translation.width + self.newPosition.width,height: value.translation.height + self.newPosition.height)
                        }   // 4.
                        .onEnded { value in
                            self.currentPosition = self.oldPosition
                            self.newPosition = self.oldPosition
                        }
                    )
                }
            }
        }
    }

    init(rows: Int,columns: Int,@viewbuilder content: @escaping (Int,Int) -> Content) {
        self.rows = rows
        self.columns = columns
        self.content = content
    }
}

如何在每个单元格上启用拖动?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。