Group 组

SwiftUI提供一个Group群组视图,以对相似的内容进行分组。它主要有两个用途:

HStack{
	Group{
		CardView()
		CardView()
		CardView()
		CardView()
	}
	.frame(width:300)
}
// 例如:创建以下视图,每次点击该组时,都会在垂直和水平布局之间翻转,使用 Group 让我们可以将点击手势立即附加到所有内容

struct ContentView: View {
    @State private var layoutVertically = false
    var body: some View {
		    //Group 本身不影响布局
        Group {
            if layoutVertically {
                VStack {
                    UserView()
                }
            } else {
                HStack {
                    UserView()
                }
            }
        }
        .onTapGesture {
            layoutVertically.toggle()
        }
    }
}

GroupBox 组盒子

GroupBox 视图将视图分组在一起,并在它们后面放置浅色背景色,以便它们脱颖而出。如果需要,您还可以选择包含标题来制作组标题

GroupBox 的一个真正强大的功能是,如果您嵌套它们,它们会自动调整颜色,以便清楚地区分它们

GroupBox("Your account") {
    Text("Outer Content")
    GroupBox {
        Text("Middle Content")
        GroupBox {
            Text("Inner Content")
        }
    }
}

在黑暗模式下这种效果即使不是最好,也很不错!另外虽然 GroupBox 在 macOS 上看起来不错,但在 iOS 上看起来一点也不好看。

how-to-group-views-visually-using-groupbox-3~dark@2x.webp


DisclosureGroup 折叠组

//先要设定是否展开的 state 参数
@State private var settingsExpanded = true

Form{
	//前面的Text是标题,后面是绑定参数
	DisclosureGroup("Audio Settings", isExpanded: $settingsExpanded) {                    
		VStack {                        
			Toggle("Treble", isOn: $trebleOn)                        
			Toggle("Bass", isOn: $bassOn)                        
			Slider(value: $levels)                    
		}                    
		.font(.title2)                    
		.padding()                
	}
}

OutlineGroup 折叠组

TBD