SwiftUI Row Höhe der Liste - wie steuern?

9

Ich habe eine einfache Liste in SwiftUI. Code und Screenshot unten enthalten. Ich möchte die Höhe jeder Zeile in der Liste reduzieren (also weniger Platz zwischen Zeilen und Textzeilen, die näher beieinander liegen).

Ich habe bereits versucht, dem HStack einen ".frame (height: 20)" hinzuzufügen, aber dadurch kann nur der Zeilenabstand vergrößert werden!

Gibt es eine Möglichkeit, das zu tun?

Vielen Dank!

Gerard

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

Geben Sie hier die Bildbeschreibung ein

Gerard
quelle

Antworten:

24

Verwenden Sie die Umgebungsvariable , um die minimale Höhe der Zeile in der Liste festzulegen und anschließend die HStack- Rahmenhöhe auf die gewünschte Höhe zu ändern .

Hier ist der 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)
        }
  }

Hier ist die Ausgabe:

Geben Sie hier die Bildbeschreibung ein

Razib Mollick
quelle
Perfekt - genau das, wonach ich gesucht habe. Vielen Dank für die schnelle Antwort Razib - sehr geschätzt!
Gerard
Tolle Antwort, es gibt viele versteckte Tricks in SwiftUI :)
Michał Ziobro vor