Wysokość listy SwiftUI - jak kontrolować?

9

Mam prostą listę w SwiftUI. Kod i zrzut ekranu zawarte poniżej. Chciałbym zmniejszyć wysokość każdego wiersza na liście (aby mniej przestrzeni między liniami i liniami tekstu bliżej siebie).

Próbowałem już dodać „.frame (wysokość: 20)” do HStack, ale pozwala to tylko zwiększyć odstępy między wierszami!

Czy jest na to sposób?

Dzięki!

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

wprowadź opis zdjęcia tutaj

Gerard
źródło

Odpowiedzi:

23

Użyj zmiennej środowiskowej , aby ustawić minimalną wysokość wiersza na liście, a następnie zmień wysokość ramy HStack na żądaną wysokość.

Oto kod:

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

Oto wynik:

wprowadź opis zdjęcia tutaj

Razib Mollick
źródło
Idealnie - dokładnie tego szukałem. Dzięki za szybką odpowiedź Razib - WIELE doceniono!
Gerard
Świetna odpowiedź, w SwiftUI jest wiele ukrytych sztuczek :)
Michał Ziobro