This app shows a vertical list of 30 items inside a ScrollView. You can scroll up and down to see all items.
iOS Swift
import SwiftUI
struct ContentView: View {
var body: some View {
ScrollView(.vertical) {
VStack(spacing: 20) {
ForEach(1...30, id: \.self) { number in
Text("Item \(number)")
.font(.title)
.frame(maxWidth: .infinity)
.padding()
.background(Color.blue.opacity(0.3))
.cornerRadius(8)
}
}
.padding()
}
}
}
@main
struct MyApp: App {
var body: some Scene {
WindowGroup {
ContentView()
}
}
}
OutputSuccess
Important Notes
ScrollView works best with flexible content sizes.
Always test scrolling on a real device or simulator to ensure smooth behavior.
Use padding inside ScrollView content to avoid content touching screen edges.
Summary
ScrollView lets users see content larger than the screen by scrolling.
You can scroll vertically, horizontally, or both.
Wrap your content inside ScrollView to enable scrolling.
Practice
(1/5)
1. What is the main purpose of using a ScrollView in an iOS app?
easy
A. To create buttons that respond to taps
B. To allow users to scroll content that is larger than the screen
C. To display images without interaction
D. To change the app's background color
Solution
Step 1: Understand ScrollView's role
A ScrollView lets users move through content that doesn't fit on the screen at once.
Step 2: Compare options
Only To allow users to scroll content that is larger than the screen describes scrolling content, which is the ScrollView's purpose.
Final Answer:
To allow users to scroll content that is larger than the screen -> Option B
Quick Check:
ScrollView = scroll content [OK]
Hint: ScrollView enables scrolling for big content [OK]
Common Mistakes:
Thinking ScrollView creates buttons
Confusing ScrollView with static image display
Assuming ScrollView changes colors
2. Which of the following is the correct way to create a vertical ScrollView in SwiftUI?
easy
A. ScrollView(.vertical) { Text("Hello") }
B. ScrollView(.horizontal) { Text("Hello") }
C. ScrollView(vertical) { Text("Hello") }
D. ScrollView(.diagonal) { Text("Hello") }
Solution
Step 1: Recall ScrollView initializer
ScrollView takes a parameter for scroll direction: .vertical or .horizontal.
Step 2: Identify correct direction
.vertical is for vertical scrolling, so ScrollView(.vertical) { Text("Hello") } is correct. ScrollView(.diagonal) { Text("Hello") } uses invalid .diagonal.
Final Answer:
ScrollView(.vertical) { Text("Hello") } -> Option A
Quick Check:
Vertical scroll = .vertical [OK]
Hint: Use .vertical for vertical scrolling in ScrollView [OK]
Common Mistakes:
Using .diagonal which is not valid
Confusing .horizontal with vertical
Using incorrect syntax like ScrollView(vertical)
3. What will be the visible result of this SwiftUI code?
5. You want to create a ScrollView that scrolls both vertically and horizontally to show a grid of colored squares. Which SwiftUI code snippet correctly achieves this?
hard
A. ScrollView(.horizontal) { LazyVGrid(columns: Array(repeating: GridItem(), count: 3)) { ForEach(0..<9) { i in Rectangle().fill(Color.red).frame(width: 50, height: 50) } } }
B. ScrollView(.vertical) { LazyHGrid(rows: Array(repeating: GridItem(), count: 3)) { ForEach(0..<9) { i in Rectangle().fill(Color.red).frame(width: 50, height: 50) } } }
C. ScrollView([.vertical, .horizontal]) { LazyVGrid(columns: Array(repeating: GridItem(), count: 3)) { ForEach(0..<9) { i in Rectangle().fill(Color.red).frame(width: 50, height: 50) } } }
D. ScrollView() { VStack { ForEach(0..<9) { i in Rectangle().fill(Color.red).frame(width: 50, height: 50) } } }
Solution
Step 1: Understand ScrollView directions
To scroll both vertically and horizontally, pass [.vertical, .horizontal] as directions.
Step 2: Use grid layout inside ScrollView
LazyVGrid with columns creates a grid that scrolls vertically and horizontally if inside a ScrollView with both directions.
Step 3: Check other options
Options B and C use only one scroll direction or wrong grid type. ScrollView() { VStack { ForEach(0..<9) { i in Rectangle().fill(Color.red).frame(width: 50, height: 50) } } } uses VStack without scrolling horizontally.
Final Answer:
ScrollView([.vertical, .horizontal]) { LazyVGrid(columns: Array(repeating: GridItem(), count: 3)) { ForEach(0..<9) { i in Rectangle().fill(Color.red).frame(width: 50, height: 50) } } } -> Option C
Quick Check:
Both directions + LazyVGrid = scroll grid [OK]
Hint: Use ScrollView([.vertical, .horizontal]) for 2D scrolling [OK]
Common Mistakes:
Using only one scroll direction for 2D scroll
Mixing LazyHGrid with vertical scroll
Not wrapping grid in ScrollView
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.