ความสูงของแถว SwiftUI ของรายการ - วิธีควบคุมได้อย่างไร


9

ฉันมีรายการแบบง่ายใน SwiftUI รหัสและภาพหน้าจอรวมอยู่ด้านล่าง ฉันต้องการลดความสูงของแต่ละแถวในรายการ (เพื่อลดช่องว่างระหว่างบรรทัดและบรรทัดข้อความให้ชิดกัน)

ฉันได้ลองเพิ่ม ".frame (height: 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

ใช้ตัวแปรสภาพแวดล้อมเพื่อตั้งค่าความสูงขั้นต่ำของแถวในรายการและหลังจากนั้นเปลี่ยนความสูงของกรอบ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 - ชื่นชมมาก!
เจอราร์ด

คำตอบที่ดีมีเคล็ดลับที่ซ่อนอยู่มากมายใน SwiftUI :)
Michał Ziobro
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.