Bird
Raised Fist0
iOS Swiftmobile~20 mins

Alignment and spacing in iOS Swift - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Alignment and Spacing Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ ui_behavior
intermediate
2:00remaining
Understanding SwiftUI VStack Alignment
What will be the horizontal alignment of the text views inside this VStack by default?
iOS Swift
VStack {
  Text("Hello")
  Text("World")
}
ATrailing aligned horizontally
BLeading aligned horizontally
CJustified alignment horizontally
DCenter aligned horizontally
Attempts:
2 left
💡 Hint
Think about the default alignment behavior of VStack in SwiftUI.
❓ ui_behavior
intermediate
2:00remaining
Spacing in HStack
Given this HStack, what is the space between the two Text views?
iOS Swift
HStack(spacing: 20) {
  Text("Left")
  Text("Right")
}
A20 points of space between the texts
BDefault system spacing between the texts
CNo space between the texts
D40 points of space between the texts
Attempts:
2 left
💡 Hint
Look at the spacing parameter in the HStack initializer.
❓ lifecycle
advanced
2:00remaining
Effect of Padding on View Size
What happens to the size of a SwiftUI Text view when you add .padding() modifier?
iOS Swift
Text("Hello")
  .padding()
AThe view becomes invisible
BThe view size increases by adding space around the text
CThe view size remains the same
DThe view size decreases to fit the text tightly
Attempts:
2 left
💡 Hint
Padding adds empty space around the content inside the view.
📝 Syntax
advanced
2:00remaining
Correct Syntax for Center Alignment in VStack
Which option correctly centers all child views horizontally inside a VStack?
AVStack(alignment: .trailing) { Text("A") }
BVStack(alignment: .leading) { Text("A") }
CVStack(alignment: .center) { Text("A") }
DVStack(alignment: .fill) { Text("A") }
Attempts:
2 left
💡 Hint
Check the valid alignment options for VStack.
🔧 Debug
expert
2:00remaining
Fixing Unexpected Spacing in SwiftUI Layout
You have this code but notice extra space around the Text view. What causes it?
iOS Swift
VStack {
  Text("Hello")
    .padding(.horizontal, 30)
  Text("World")
}
AThe .padding(.horizontal, 30) adds 30 points padding on left and right, increasing space
BThe VStack adds default spacing causing extra space
CText views have default margin causing extra space
DThe code has a syntax error causing layout issues
Attempts:
2 left
💡 Hint
Padding adds space inside the view's bounds around content.

Practice

(1/5)
1. Which SwiftUI view modifier aligns text to the center horizontally within its container?
easy
A. .background(Color.blue)
B. .multilineTextAlignment(.center)
C. .padding()
D. .frame(alignment: .leading)

Solution

  1. Step 1: Understand text alignment modifiers

    The .multilineTextAlignment modifier controls horizontal alignment of text inside its view.
  2. Step 2: Identify the center alignment option

    Using .multilineTextAlignment(.center) centers the text horizontally.
  3. Final Answer:

    .multilineTextAlignment(.center) -> Option B
  4. Quick Check:

    Text alignment center = .multilineTextAlignment(.center) [OK]
Hint: Use .multilineTextAlignment for text horizontal alignment [OK]
Common Mistakes:
  • Confusing .frame(alignment:) with text alignment
  • Using .padding() expecting alignment effect
  • Thinking .background affects alignment
2. Which of the following is the correct syntax to add a fixed horizontal space of 20 points between two views in SwiftUI?
easy
A. Spacer().frame(width: 20)
B. Spacer(minLength: 20)
C. Spacer().padding(20)
D. Spacer().frame(height: 20)

Solution

  1. Step 1: Understand Spacer behavior

    Spacer creates flexible space, but to fix size, we use frame modifier.
  2. Step 2: Set fixed width for horizontal spacing

    Using Spacer().frame(width: 20) creates a fixed horizontal space of 20 points.
  3. Final Answer:

    Spacer().frame(width: 20) -> Option A
  4. Quick Check:

    Fixed horizontal space = Spacer with frame width [OK]
Hint: Use Spacer with .frame(width:) for fixed horizontal space [OK]
Common Mistakes:
  • Using minLength parameter which is optional and flexible
  • Setting frame height instead of width for horizontal space
  • Using padding which adds space inside view, not between views
3. What will be the horizontal alignment of the text inside this VStack?
VStack(alignment: .leading) {
  Text("Hello")
  Text("World")
}
medium
A. Both texts aligned to the leading (left) edge horizontally
B. Both texts aligned to the center horizontally
C. Texts aligned independently with default center alignment
D. Texts aligned to the trailing (right) edge horizontally

Solution

  1. Step 1: Understand VStack alignment parameter

    VStack's alignment parameter sets horizontal alignment for its child views.
  2. Step 2: Identify .leading alignment effect

    Using .leading aligns all child views to the left edge horizontally.
  3. Final Answer:

    Both texts aligned to the leading (left) edge horizontally -> Option A
  4. Quick Check:

    VStack(alignment: .leading) aligns children left [OK]
Hint: VStack(alignment: .leading) aligns children left horizontally [OK]
Common Mistakes:
  • Assuming default center alignment overrides VStack alignment
  • Confusing VStack alignment with Text alignment modifiers
  • Thinking alignment affects vertical position
4. Identify the error in this SwiftUI code that tries to add space between two buttons:
HStack {
  Button("OK") {}
  Spacer(20)
  Button("Cancel") {}
}
medium
A. Buttons must be wrapped in VStack, not HStack
B. Button labels must be Text views, not strings
C. Spacer must be replaced with padding for spacing
D. Spacer cannot take a direct integer parameter like 20

Solution

  1. Step 1: Check Spacer usage

    Spacer does not accept an integer parameter directly; it uses minLength as a named parameter.
  2. Step 2: Correct Spacer syntax

    Correct usage is Spacer(minLength: 20) or Spacer().frame(width: 20) for fixed space.
  3. Final Answer:

    Spacer cannot take a direct integer parameter like 20 -> Option D
  4. Quick Check:

    Spacer parameter must be named minLength [OK]
Hint: Spacer needs named minLength parameter, not direct integer [OK]
Common Mistakes:
  • Passing integer without parameter name to Spacer
  • Confusing Spacer with padding for spacing
  • Thinking Button labels must be Text views
5. You want to create a horizontal stack with three Text views spaced evenly across the screen width. Which code snippet achieves this best?
hard
A. HStack { Text("One") Text("Two") Text("Three") }.frame(maxWidth: .infinity, alignment: .center)
B. HStack(spacing: 50) { Text("One") Text("Two") Text("Three") }
C. HStack { Text("One") Spacer() Text("Two") Spacer() Text("Three") }
D. VStack { Text("One") Spacer() Text("Two") Spacer() Text("Three") }

Solution

  1. Step 1: Understand even spacing with Spacer

    Using Spacer() between views adds flexible space that pushes views apart evenly.
  2. Step 2: Analyze each option

    HStack { Text("One") Spacer() Text("Two") Spacer() Text("Three") } uses Spacer() between Text views inside HStack, distributing them evenly horizontally.
  3. Step 3: Exclude other options

    HStack(spacing: 50) { Text("One") Text("Two") Text("Three") } uses fixed spacing, not flexible. HStack { Text("One") Text("Two") Text("Three") }.frame(maxWidth: .infinity, alignment: .center) centers all texts together. VStack { Text("One") Spacer() Text("Two") Spacer() Text("Three") } uses VStack, which stacks vertically.
  4. Final Answer:

    HStack with Spacer() between Text views for even spacing -> Option C
  5. Quick Check:

    Use Spacer() in HStack for even horizontal spacing [OK]
Hint: Use Spacer() between views in HStack for even spacing [OK]
Common Mistakes:
  • Using fixed spacing instead of flexible Spacer
  • Using VStack instead of HStack for horizontal layout
  • Relying on frame alignment without spacers
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