Висота списку рядків SwiftUI - як контролювати?


9

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

Я вже намагався додати ".frame (висота: 20)" до HStack, але це дозволяє лише збільшити міжрядковий інтервал!

Чи є спосіб це зробити?

Дякую!

Джерард

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 є багато прихованих хитрощів :)
Міхал Зібро
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.