0

ドラッグ可能なセルを使用して単純なリストを実装しようとしています (iOS 15)。今のところ、List と ScrollView の 2 つの基本ソリューションがあります。この方法のどれも、私を適切な結果に導きません。

まず、いくつかのコードを提供します。

リスト アイテム ビュー:

struct ListItemView: View {
    let index: Int

    var body: some View {
        HStack {
            Text("Item \(index)")
                .foregroundColor(.white)
            Spacer()
        }
        .padding()
        .background(Color.gray)
        .clipShape(RoundedRectangle(cornerRadius: 16.0))
    }
}

最初の解決策 (リストを使用):

struct ContentView: View {
    var body: some View {
        List(0 ..< 10) { i in
            ListItemView(index: i)
                .onDrag {
                    NSItemProvider(object: String(describing: "item_\(i)") as NSString)
                }
                .padding(.bottom, 8.0)
                .listRowBackground(Color.clear)
                .listRowSeparator(.hidden)
                .listRowInsets(EdgeInsets(top: 0, leading: 8, bottom: 0, trailing: 8))
        }
        .background(Color.black)
        .listStyle(PlainListStyle())
    }
}

結果は問題ありませんが、ドラッグ操作を開始すると、セルの周りに白い四角形が表示されます。これは私が望んでいるものではありません:

ScrollView を使用したドラッグ アンド ドロップ プレビュー

2番目の解決策(ScrollViewを使用)

struct ContentView: View {
    var body: some View {
        ScrollView {
            ForEach(0 ..< 10) { i in
                ListItemView(index: i)
                    .onDrag {
                        NSItemProvider(object: String(describing: "item_\(i)") as NSString)
                    }
            }
        }
        .background(Color.black)
    }
}

結果は少し異なります。色付きの四角形は表示されません (これは、List を使用しておらず、ドラッグ & ドロップ機能のメカニズムが異なるためだと思います)。また、丸みを帯びた角のないスケーリングされたプレビューと形状もあります。

リストを使用したドラッグ アンド ドロップ プレビュー

したがって、望ましい動作は次のとおりです。a)プレビューのサイズはリストアイテムの元のサイズと同じですb)白いフレームのない角の丸い形状があります

どうすれば達成できますか?

4

1 に答える 1