SwiftUI Row Height of List-제어하는 방법?


9

SwiftUI에 간단한 목록이 있습니다. 코드 및 스크린 샷이 아래에 포함되어 있습니다. 목록에서 각 행의 높이를 줄이려고합니다 (따라서 줄과 텍스트 줄 사이의 간격이 줄어 듭니다).

HStack에 ".frame (height : 20)"을 추가하려고했지만 줄 간격을 늘릴 수만 있습니다!

그렇게 할 방법이 있습니까?

감사!

제라드

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

환경 변수를 사용 하여 목록에서 최소 행 높이를 설정 한 후 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)
        }
  }

출력은 다음과 같습니다.

여기에 이미지 설명을 입력하십시오


완벽-내가 찾던 것. 빠른 응답 Razib에 감사드립니다-대단히 감사합니다!
Gerard

정답은 SwiftUI에 많은 숨겨진 트릭이 있습니다 :)
Michał Ziobro
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.