CornerStacks provides an easy way to layout SwiftUI views at the 4 corners of the parent view. It works by wrapping HStack and VStack, with a straightforward implementation combining both HStack and VStack along with some Spacers to produce the desired layout for each of the corner views. The primary purpose is to reduce boilerplate setup, increase code readability and allow for rapid prototyping. This layout technique is nicely explained by John Sundell in this video.
Before using any of the views make sure you import the CornerStacks module
import CornerStacks
There are 4 views defined for both HStack and VStack that represent the 4 corners.
HStack
TopLeadingHStack
TopTrailingHStack
BottomLeadingHStack
BottomTrailingHStack
VStack
TopLeadingVStack
TopTrailingVStack
BottomLeadingVStack
BottomTrailingVStack
Example
It is much easier to explain in an example
var body: some View {
ZStack {
// just like a normal HStack you can place many nested views
TopLeadingHStack {
makeSquare(size: 80)
makeSquare(size: 80)
}
// spacing is passed along to the wrapped HStack and VStack
TopTrailingVStack(spacing: 30) {
makeSquare(size: 80)
makeSquare(size: 80)
}
// horizontal alignment is passed along to the wrapped VStack
BottomLeadingVStack(alignment: .leading) {
makeSquare(size: 40)
makeSquare(size: 80)
}
// vertical alignment passed along to the wrapped VStack
BottomTrailingHStack(alignment: .top) {
makeSquare(size: 80)
makeSquare(size: 40)
}
// it also works in nested views like other VStacks and HStacks
HStack {
TopLeadingHStack {
makeSquare(size: 40)
}
BottomTrailingVStack {
makeSquare(size: 40)
makeSquare(size: 40)
}
}
.frame(width: 200, height: 150)
.background(Color.black)
}
}
Here is the output from the code above
Contributing
Contributions are more than welcome. Please create a GitHub issue before submitting a pull request to plan and discuss implementation.
CornerStacks provides an easy way to layout SwiftUI views at the 4 corners of the parent view. It works by wrapping
HStackandVStack, with a straightforward implementation combining bothHStackandVStackalong with someSpacers to produce the desired layout for each of the corner views. The primary purpose is to reduce boilerplate setup, increase code readability and allow for rapid prototyping. This layout technique is nicely explained by John Sundell in this video.Requirements
Installation
I . Automatically in Xcode:
https://github.com/filiplazov/CornerStacksto addCornerStacksto your project.II . Manually in your Package.swift file add:
Usage
Before using any of the views make sure you import the
CornerStacksmoduleThere are 4 views defined for both
HStackandVStackthat represent the 4 corners.HStack
TopLeadingHStackTopTrailingHStackBottomLeadingHStackBottomTrailingHStackVStack
TopLeadingVStackTopTrailingVStackBottomLeadingVStackBottomTrailingVStackExample
It is much easier to explain in an example
Here is the output from the code above
Contributing
Contributions are more than welcome. Please create a GitHub issue before submitting a pull request to plan and discuss implementation.
Author
License
CornerStacks is available under the MIT license. See the LICENSE file for more info.