SwiftUI Row Height of List - comment contrôler?

9

J'ai une liste simple dans SwiftUI. Code et capture d'écran inclus ci-dessous. Je voudrais réduire la hauteur de chaque ligne de la liste (donc moins d'espace entre les lignes et les lignes de texte plus rapprochées).

J'ai déjà essayé d'ajouter un ".frame (hauteur: 20)" au HStack mais cela ne permet que d'augmenter l'espacement des lignes!

Y-a-t-il un moyen de faire ça?

Merci!

Gérard

import SwiftUI

struct PressureData: Identifiable {
  let id: Int
  let timeStamp: String
  let pressureVal: Int
}

struct ContentView : View {
  @State var pressureList = [
    PressureData(id: 0, timeStamp: "11:49:57", pressureVal: 10),
    PressureData(id: 1, timeStamp: "11:49:56", pressureVal: 8),
    PressureData(id: 2, timeStamp: "11:49:55", pressureVal: 9),
    PressureData(id: 3, timeStamp: "11:49:54", pressureVal: 1),
  ]

  var body: some View {
    VStack {
        Text("Pressure Readings")
            .font(.system(size: 30))
        List(pressureList) { row in
            HStack {
               Spacer()
                Text(row.timeStamp)
                Text("--->")
                Text(String(row.pressureVal))
                Spacer()
            } .frame(height: 30)
        }
    }
  }
}

entrez la description de l'image ici

Gérard
la source

Réponses:

24

Utilisez la variable d' environnement pour définir la hauteur minimale de la ligne dans la liste et modifiez ensuite la hauteur du cadre HStack à la hauteur souhaitée.

Voici le code:

var body: some View {
    VStack {
        Text("Pressure Readings")
            .font(.system(size: 30))
        List(pressureList) { row in
            HStack {
                Spacer()
                Text(row.timeStamp)
                Text("--->")
                Text(String(row.pressureVal))
                Spacer()
            }.frame(height: 10)
        }.environment(\.defaultMinListRowHeight, 10)
        }
  }

Voici la sortie:

entrez la description de l'image ici

Razib Mollick
la source
Parfait - exactement ce que je cherchais. Merci pour la réponse rapide Razib - BEAUCOUP appréciée!
Gerard
Grande réponse, il y a beaucoup de trucs cachés dans SwiftUI :)
Michał Ziobro