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.
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?
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))
}
}
}