如何向视图添加拖/放支持,同时使拖动预览与被拖动的视图相同

问题描述 投票:0回答:1

我正在尝试在 SwiftUI 视图上实现拖放重新排序功能(不使用

List
)。我正在使用
.draggable
,但我不确定如何实现拖/放,以使拖动预览看起来与被拖动的视图相同。可以在下面的代码中看到拖动预览形状异常:

@State private var items: [Color] = [.red, .blue, .green, .orange, .purple]

var body: some View {
  VStack(spacing: 16) {
    ForEach(items, id: \.self) { color in
      color
        .frame(height: 100)
        .draggable(color) {
          color
            .frame(height: 100)
        }
    }
  }
  .padding()
}

我已经实施了这篇文章中概述的建议,但这似乎干扰了拖/放行为。

如果可能的话,有兴趣。

swiftui drag-and-drop
1个回答
0
投票

我添加了一个 GeometryReader,然后用它来计算预览的大小。

VStack(spacing: 16) {
    ForEach(items, id: \.self) { color in
        GeometryReader { geo in
            color
                .frame(height: 100)
                .draggable(color) {
                    color
                        .frame(width: geo.size.width, height: geo.size.height)
                }
        }
    }
  }
© www.soinside.com 2019 - 2024. All rights reserved.