Book Image

An iOS Developer's Guide to SwiftUI

By : Michele Fadda
Book Image

An iOS Developer's Guide to SwiftUI

By: Michele Fadda

Overview of this book

– SwiftUI transforms Apple Platform app development with intuitive Swift code for seamless UI design. – Explore SwiftUI's declarative programming: define what the app should look like and do, while the OS handles the heavy lifting. – Hands-on approach covers SwiftUI fundamentals and often-omitted parts in introductory guides. – Progress from creating views and modifiers to intricate, responsive UIs and advanced techniques for complex apps. – Focus on new features in asynchronous programming and architecture patterns for efficient, modern app design. – Learn UIKit and SwiftUI integration, plus how to run tests for SwiftUI applications. – Gain confidence to harness SwiftUI's full potential for building professional-grade apps across Apple devices.
Table of Contents (25 chapters)
Free Chapter
1
Part 1: Simple Views
5
Part 2: Scrollable Views
8
Part 3: SwiftUI Navigation
11
Part 4: Graphics and Animation
14
Part 5: App Architecture
17
Part 6: Beyond Basics

Property wrappers

In Swift, property wrappers are program entities with names starting with @.

Property wrappers are “logic” code fragments, which are executed whenever set or get is executed on that property. In our case, a property or an attribute is, to keep things simple, just a fancy name for a variable within our struct.

So, whenever you “do” something to that variable, the corresponding property wrapper will be invoked.

In the case of @State, which is a property wrapper defined by Apple, it tells the following SwiftUI a few things about the view struct:

  • It tells SwiftUI that the value should be persisted and not reset to its initial value whenever the view gets redrawn
  • It tells SwiftUI that a property’s value is allowed to change
  • It tells SwiftUI to redraw that corresponding view whenever the @State property changes

The following figure shows you a conceptual flowchart on how SwiftUI uses the @State wrapper to...