SwiftUI Высота строки списка - как контролировать?


9

У меня есть простой список в SwiftUI. Код и скриншот включены ниже. Я хотел бы уменьшить высоту каждой строки в списке (чтобы меньше места между строками и строками текста ближе друг к другу).

Я уже пытался добавить «.frame (height: 20)» в HStack, но он позволяет только увеличить межстрочный интервал!

Есть способ сделать это?

Спасибо!

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

введите описание изображения здесь

Ответы:


24

Используйте переменную Environment, чтобы установить минимальную высоту строки в списке, и после этого измените высоту кадра HStack на желаемую высоту.

Вот код:

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

Вот вывод:

введите описание изображения здесь


Идеально - именно то, что я искал. Спасибо за быстрый ответ Разиб - НАМНОГО ценится!
Джерард

Отличный ответ, в SwiftUI много скрытых трюков :)
Michał Ziobro
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.