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

iOS 17 changes in state management

State management is related to architecture in SwiftUI applications as, in a SwiftUI application, you need to bind state changes to the UI, as SwiftUI is declarative and does not have “methods” that you can call to determine changes in the UI. These changes need to be achieved by declaration and state binding. SwiftUI will automatically redraw the views affected by the changes in the underlying data.

With iOS 17 and Xcode 15, presented during the WWDC2023 conference, Apple introduced some variations to all the binding mechanisms we have just examined: @Observable is used rather than ObservableObject, while we are expected to use @Bindable to mark individual properties we would want to be able to bind. @Bindable usage is limited to classes marked as @Observable. If you deliberately want to avoid observing a property, you can use ObservationIgnored to mark that specific property.

The @Observable property wrapper is the easiest way...