SwiftUI Views & the body Property
SwiftUI builds every screen from views : small value types that describe what the UI should look like. In this lesson you'll meet the View protocol, its body property, the core views Text , Image , and Button , and how to compose them into rich layouts.
Learn SwiftUI Views & the body Property in our free Swift course — a beginner-friendly interactive lesson with worked examples, a practice exercise and a…
Part of the free Swift course at LearnCodingFast — hands-on lessons with examples you run in your browser, plus practice exercises and a quick quiz.
Building iOS Apps with SwiftUI • Intermediate
What You'll Learn in This Lesson
1️⃣ The View Protocol & body
A SwiftUI view is any type that conforms to the View protocol. The protocol has exactly one requirement: a computed property called body that returns some View . The some keyword is an opaque type — it means "one specific view, whose exact type you don't need to spell out".
2️⃣ Composition — Building Big Views from Small Ones
You rarely build a screen as one view. Instead you compose : nest Text , Image , and Button inside container views like VStack , and extract reusable chunks into their own View structs. Each piece stays small, focused, and reusable.
3️⃣ Modifiers — Styling Views
A modifier is a method like .font() or .padding() that returns a new view wrapping the original with the change applied. You chain them. Order matters: each modifier acts on the result of the one before it.
Your turn. Fill in the blanks to declare a proper view and show a star above a welcome message.
Build a BusinessCardView that stacks a profile SF Symbol, a name in a large bold font, a job title, and a tappable "Email me" button. Style it with at least two modifiers. Extract the whole card into its own View struct and use it inside a screen view.
Practice quiz
What must every SwiftUI view conform to?
- The View protocol
- The UIView class
- The Renderable protocol
- The Drawable class
Answer: The View protocol. A SwiftUI view is any type that conforms to the View protocol.
What is the single required member of the View protocol?
- A render() method
- A draw(rect:) method
- A computed body property
- An init() method
Answer: A computed body property. Conforming to View means providing a computed body property that returns the view's content.
What type does the body property return?
- Void
- An opaque some View
- A UIView
- A String
Answer: An opaque some View. body is declared as 'var body: some View', an opaque return type describing one concrete view.
How do you build complex UIs in SwiftUI?
- By subclassing UIView
- By composing small views together
- By editing a XIB file
- By writing one giant view
Answer: By composing small views together. SwiftUI favours composition: you nest and combine small, focused views to build larger ones.
Which view displays a line of read-only text?
- Label
- TextView
- Text
- StringView
Answer: Text. Text is the SwiftUI view used to show a string of read-only text.
What does the 'some' keyword in 'some View' indicate?
- An array of views
- An optional view
- An opaque type that is one specific View
- Any random type
Answer: An opaque type that is one specific View. 'some View' is an opaque return type: a single concrete type that conforms to View, hidden from the caller.
Which view is used to show an image asset?
- Picture
- Photo
- Bitmap
- Image
Answer: Image. Image displays images, e.g. Image("logo") or Image(systemName: "star").
How do you create an SF Symbol image?
- Image(symbol: "star")
- Image(systemName: "star")
- Symbol("star")
- Image.system("star")
Answer: Image(systemName: "star"). Image(systemName:) loads one of Apple's built-in SF Symbols by name.
What is a view modifier?
- A way to delete a view
- A separate protocol
- A storage property
- A method that returns a new modified view
Answer: A method that returns a new modified view. Modifiers like .padding() or .foregroundColor() return a new view wrapping the original with the change applied.
Why are SwiftUI views described as a description of the UI?
- They are mutable objects you update by hand
- They are lightweight value types SwiftUI uses to compute the screen
- They are stored in a database
- They run on a background thread only
Answer: They are lightweight value types SwiftUI uses to compute the screen. Views are cheap value-type descriptions; SwiftUI reads them to figure out what to render and updates them efficiently.