How to group views visually using GroupBox
How to group views visually using GroupBox 관련
Updated for Xcode 15
Updated in iOS 15
SwiftUI's GroupBox
view groups views together and places a light background color behind them so they stand out. You can optionally also include a header to make group titles, if you need to.
By default GroupBox
with align its views vertically. For example, this will show three text views one above the other:
GroupBox {
Text("Your account")
.font(.headline)
Text("Username: tswift89")
Text("City: Nashville")
}
![Three lines of text centered in a gray rounded rectangle. The top line is bolded.](https://hackingwithswift.com/img/books/quick-start/swiftui/how-to-group-views-visually-using-groupbox-1~dark@2x.png)
If you want to control that layout, such as changing axis or adjusting the alignment, create a stack yourself:
GroupBox {
VStack(alignment: .leading) {
Text("Your account")
.font(.headline)
Text("Username: tswift89")
Text("City: Nashville")
}
}
![Three lines of text left-aligned in a gray rounded rectangle. The top line is bolded.](https://hackingwithswift.com/img/books/quick-start/swiftui/how-to-group-views-visually-using-groupbox-2~dark@2x.png)
One real power feature of GroupBox
is that if you nest them they will automatically adapt their colors so they are neatly distinguished:
GroupBox {
Text("Outer Content")
GroupBox {
Text("Middle Content")
GroupBox {
Text("Inner Content")
}
}
}
![Three concentric rounded rectangles, each containing a line of text, and the inner rectangle(s).](https://hackingwithswift.com/img/books/quick-start/swiftui/how-to-group-views-visually-using-groupbox-3~dark@2x.png)
This effect works just as well – if not better! – in dark mode.
Like I said, you can add titles to your GroupBox
and although it looks okay on macOS it doesn't look nice at all on iOS:
GroupBox("Your account") {
VStack(alignment: .leading) {
Text("Username: tswift89")
Text("City: Nashville")
}
}
![A macOS window containing “Your account” above a two lines of text in a rounded rectangle. Beside it is an iPhone with similar contents consuming horizontal space, resulting in a visual imbalance.](https://hackingwithswift.com/img/books/quick-start/swiftui/how-to-group-views-visually-using-groupbox-4~dark@2x.png)