Bird
Raised Fist0
iOS Swiftmobile~5 mins

VStack, HStack, ZStack in iOS Swift

Choose your learning style10 modes available
Introduction

Stacks help you arrange views easily in a line or on top of each other. They make your app look neat without much work.

To put buttons or text one below another in a column.
To place images or icons side by side in a row.
To layer views on top of each other, like putting a label over a picture.
To create simple layouts that adjust well on different screen sizes.
To group related views together visually.
Syntax
iOS Swift
VStack {
    // views stacked vertically
}

HStack {
    // views stacked horizontally
}

ZStack {
    // views stacked on top of each other
}

Use VStack for vertical layout, HStack for horizontal layout, and ZStack to overlap views.

You can add spacing and alignment options inside the stacks.

Examples
This puts two text views one below the other.
iOS Swift
VStack {
    Text("Hello")
    Text("World")
}
This places two icons side by side with space between them.
iOS Swift
HStack(spacing: 20) {
    Image(systemName: "star")
    Image(systemName: "heart")
}
This draws a blue circle with the text "Hi" on top.
iOS Swift
ZStack {
    Circle().fill(Color.blue).frame(width: 100, height: 100)
    Text("Hi")
}
Vertical stack with left alignment and space between texts.
iOS Swift
VStack(alignment: .leading, spacing: 10) {
    Text("Left aligned")
    Text("Texts")
}
Sample App

This app shows three stacks: a vertical stack with three texts, a horizontal stack with three texts, and a ZStack with a green square and text on top.

iOS Swift
import SwiftUI

struct ContentView: View {
    var body: some View {
        VStack(spacing: 30) {
            Text("VStack Example")
                .font(.headline)

            VStack {
                Text("One")
                Text("Two")
                Text("Three")
            }
            .border(Color.gray)

            HStack(spacing: 20) {
                Text("A")
                Text("B")
                Text("C")
            }
            .border(Color.blue)

            ZStack {
                Rectangle()
                    .fill(Color.green)
                    .frame(width: 100, height: 100)
                Text("On Top")
                    .foregroundColor(.white)
                    .bold()
            }
        }
        .padding()
    }
}

@main
struct MyApp: App {
    var body: some Scene {
        WindowGroup {
            ContentView()
        }
    }
}
OutputSuccess
Important Notes

Stacks automatically adjust to screen size and orientation.

You can nest stacks inside each other for complex layouts.

Use alignment and spacing parameters to control layout details.

Summary

VStack arranges views vertically.

HStack arranges views horizontally.

ZStack layers views on top of each other.

Practice

(1/5)
1. Which SwiftUI stack arranges views vertically, one on top of the other?
VStack, HStack, or ZStack?
easy
A. ZStack
B. VStack
C. HStack
D. StackView

Solution

  1. Step 1: Understand VStack behavior

    VStack arranges child views vertically, stacking them from top to bottom.
  2. Step 2: Compare with other stacks

    HStack arranges views horizontally, ZStack layers views on top of each other.
  3. Final Answer:

    VStack -> Option B
  4. Quick Check:

    Vertical arrangement = VStack [OK]
Hint: Remember V for vertical stacking [OK]
Common Mistakes:
  • Confusing HStack with VStack
  • Thinking ZStack arranges views vertically
  • Assuming StackView is a SwiftUI stack
2. Which of the following is the correct syntax to create a horizontal stack with two Text views in SwiftUI?
?
easy
A. HStack -> Text("Hello") + Text("World")
B. HStack(Text("Hello"), Text("World"))
C. HStack[Text("Hello"), Text("World")]
D. HStack { Text("Hello") Text("World") }

Solution

  1. Step 1: Recall SwiftUI stack syntax

    Stacks use braces { } to group child views, separated by spaces or newlines.
  2. Step 2: Identify correct syntax

    HStack { Text("Hello") Text("World") } uses braces and places Text views inside correctly. Others use invalid syntax.
  3. Final Answer:

    HStack { Text("Hello") Text("World") } -> Option D
  4. Quick Check:

    Use braces for stacks [OK]
Hint: Stacks use braces { } to group views [OK]
Common Mistakes:
  • Using parentheses instead of braces
  • Using brackets instead of braces
  • Trying to use operators to combine views
3. What will be the visual arrangement of the texts when this SwiftUI code runs?
ZStack {
  Text("Bottom")
  Text("Top")
}
medium
A. Texts appear side by side horizontally
B. "Bottom" text appears above "Top" text
C. "Top" text appears above "Bottom" text
D. Texts appear stacked vertically

Solution

  1. Step 1: Understand ZStack layering order

    ZStack layers views in order, last view is on top visually.
  2. Step 2: Apply to given code

    "Bottom" is added first, "Top" second, so "Top" appears above "Bottom".
  3. Final Answer:

    "Top" text appears above "Bottom" text -> Option C
  4. Quick Check:

    ZStack last view is top layer [OK]
Hint: Last view in ZStack is on top [OK]
Common Mistakes:
  • Assuming first view is on top
  • Thinking ZStack arranges views horizontally
  • Confusing ZStack with VStack or HStack
4. Identify the error in this SwiftUI code snippet:
HStack {
  Text("One")
  VStack
  Text("Two")
}
medium
A. Missing braces after VStack declaration
B. Text views cannot be inside HStack
C. HStack requires parentheses instead of braces
D. VStack cannot be nested inside HStack

Solution

  1. Step 1: Check VStack usage

    VStack is a view container and requires braces { } to enclose child views.
  2. Step 2: Identify missing braces

    Code shows VStack without braces, causing syntax error.
  3. Final Answer:

    Missing braces after VStack declaration -> Option A
  4. Quick Check:

    Containers need braces for children [OK]
Hint: Always add braces after VStack or HStack [OK]
Common Mistakes:
  • Omitting braces for stack containers
  • Thinking Text can't be inside HStack
  • Using parentheses instead of braces for stacks
5. You want to create a SwiftUI view where three colored squares overlap each other with red on bottom, green in middle, and blue on top. Which stack and order of views achieves this?
hard
A. ZStack { Color.red Color.green Color.blue } with Color.blue last
B. VStack { Color.red Color.green Color.blue } with Color.red last
C. HStack { Color.blue Color.green Color.red } with Color.red last
D. ZStack { Color.blue Color.green Color.red } with Color.red last

Solution

  1. Step 1: Choose stack for overlapping views

    ZStack layers views on top of each other, perfect for overlapping.
  2. Step 2: Order views for correct layering

    In ZStack, last view is top layer, so Color.blue last puts blue on top, red first puts red at bottom.
  3. Final Answer:

    ZStack { Color.red Color.green Color.blue } with Color.blue last -> Option A
  4. Quick Check:

    ZStack layering order = last view on top [OK]
Hint: Use ZStack; last view is top layer [OK]
Common Mistakes:
  • Using VStack or HStack for overlapping
  • Reversing order of colors in ZStack
  • Thinking first view is top layer in ZStack
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard