SwiftUI GroupBoxStyle填充高度

SwiftUI GroupBoxStyle填充高度,swiftui,Swiftui,我有一个自定义的GroupBoxStyle,我想在它的左边缘添加一条彩色线,它占据了GroupBoxStyle的整个高度。然后在VStack 这里蓝色是GroupBox的内容,黄色是我要添加的那一行。蓝色内容可以是任何视图 在我当前的实现中(见下文),问题是垂直线没有占据GroupBox的所有高度 这个实现和示例创建了这一点(请注意,黄色不代表行的整个高度) 这里有一个解决方案(我保留了原始的额外修饰符,但假设它们是为了调试目的) 公共结构标准GroupBoxStyle:GroupBoxS

我有一个自定义的
GroupBoxStyle
,我想在它的左边缘添加一条彩色线,它占据了GroupBoxStyle的整个高度。然后在
VStack

这里蓝色是GroupBox的
内容,黄色是我要添加的那一行。蓝色内容可以是任何视图

在我当前的实现中(见下文),问题是垂直线没有占据GroupBox的所有高度

这个实现和示例创建了这一点(请注意,黄色不代表行的整个高度)

这里有一个解决方案(我保留了原始的额外修饰符,但假设它们是为了调试目的)

公共结构标准GroupBoxStyle:GroupBoxStyle{ public func makeBody(配置:Self.configuration)->一些视图{ HStack(间距:0){ 配置.内容 .padding(.leading,5) .border(Color.green)/这里有一个解决方案(我保留了原始的额外修饰符,但假设它们是为了调试目的)

公共结构标准GroupBoxStyle:GroupBoxStyle{ public func makeBody(配置:Self.configuration)->一些视图{ HStack(间距:0){ 配置.内容 .padding(.leading,5)
.border(Color.green)//这是意料之中的事。我想知道为什么我的解决方案不起作用。有什么想法吗?这是意料之中的事。我想知道为什么我的解决方案不起作用。有什么想法吗?
import SwiftUI

struct ContentView: View {
    var body: some View {
        NavigationView {
            ScrollView {
                VStack(spacing: 8) {
                    GroupBox {
                        HStack {
                            VStack {
                                Text("Hello")
                                Text("Hello")
                                Text("Hello")
                                Text("Hello")

                            }
                            Spacer()
                        }
                    }

                    GroupBox {
                        Color.blue
                            .frame(height: 50)
                    }
                }
                // try to uncomment this
//                .padding(8)
            }
            .groupBoxStyle(StandardGroupBoxStyle())
            .navigationBarTitle("My Group", displayMode: .large)
        }
    }
}

public struct StandardGroupBoxStyle: GroupBoxStyle {
    public func makeBody(configuration: Self.Configuration) -> some View {
        HStack(spacing: 0) {
            Color.yellow
                .frame(width: 5)
                .frame(maxHeight: .infinity)

            VStack {
                configuration
                    .content
            }
            .border(Color.green)
            Spacer()
        }
        .border(Color.red)
    }
}



struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}
public struct StandardGroupBoxStyle: GroupBoxStyle {
    public func makeBody(configuration: Self.Configuration) -> some View {
        HStack(spacing: 0) {
            configuration.content
                .padding(.leading, 5)
                .border(Color.green)      // << debug?
            Spacer()                     // << debug?
        }
        .overlay(Color.yellow.frame(width: 5), alignment: .leading)
        .border(Color.red)              // << debug?
    }
}