web-dev-qa-db-fra.com

SwiftUI - Supprimer l'espace entre les cellules

J'implémente une vue de liste dans SwiftUI. Ce que j'essaie d'approcher, c'est d'avoir des cellules qui n'ont aucun espace entre les autres cellules ou la vue parent.

enter image description here

Donc, dans cette capture d'écran, comme vous pouvez le voir, il y a un espace entre chaque cellule et également un espace avec le bord du téléphone, que je veux supprimer.

struct FlickrView : View {
    var flickrResponse: [FlickrResponse]
    var body: some View {
        List(flickrResponse) { item in
            FlickrImageCell(response: item)
        }
    }
}

struct FlickrImageCell : View {
    var response: FlickrResponse
    var body: some View {
        return ZStack(alignment: .topLeading) {
            Image(uiImage: response.image ?? UIImage())
                .resizable()
                .aspectRatio(contentMode: .fill)
                .frame(width: nil, height: 100.0, alignment: .center)
                .clipShape(Rectangle())
                .padding(0)
            Text(response.title).fontWeight(.medium).multilineTextAlignment(.center)
        }
    }
}

J'ai essayé ce modificateur:

.padding(EdgeInsets(top: 0, leading: -20, bottom: 20, trailing: -20))

Mais j'ai deux problèmes avec cette approche: Premièrement, je ne pense pas qu'il soit commode d'écrire des valeurs négatives littérales. Deuxièmement, le rembourrage inférieur ne fonctionne avec aucune valeur.

Alors des suggestions?

8

J'ai eu de la chance avec listRowInsets

struct ContentView: View {
    var body: some View {
        List {
            Color.red
            .listRowInsets(.init(top: 0, leading: 0, bottom: 0, trailing: 0))
            Color.blue
            .listRowInsets(.init(top: 0, leading: 0, bottom: 0, trailing: 0))
            Color.yellow
            .listRowInsets(.init(top: 0, leading: 0, bottom: 0, trailing: 0))
        }
    }
}
9
MScottWaller