我正在尝试在 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()
}
我已经实施了这篇文章中概述的建议,但这似乎干扰了拖/放行为。
如果可能的话,有兴趣。
我添加了一个 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)
}
}
}
}