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

Final notes on Subviews and @Binding, Classes, and @ObservableObject

There are a few more things worth noticing while examining bindings: you cannot bind a UI element to more than just one variable, and that variable needs to be defined in just one place.

This means that we cannot bind the same element to several different variables, but just one. This avoids inconsistencies and ambiguities.

You are allowed to use the same @State variable for many different views and purposes. For instance, we used a single variable to change the background color, alignment, font, and so on.

You can, of course, have as many state variables as you need, within a view for the many UI elements contained in that view.

You can (and should) group together conveniently many different state variables within the same struct and use the attributes of struct to bind to UI elements.

You will need to bind with $ in front of the struct name:

$structName.structAttribute

However, binding with ...