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

The Grid view

Besides stacks, SwiftUI defines a container view called Grid to lay out child views in a grid. An example of a grid would be a checkerboard, where each square tile would be a grid item. Everything you can achieve with lists and tables, you can also achieve with a grid, as a list is just a grid where you happen to have a single item per row (instead of many!).

Apple’s definition of Grid is, “a container view that arranges views in a two-dimensional layout”.

To be more precise, a Grid view shows its contents in multiple orthogonal rows and columns and is an eager container. It is eager because it allocates all memory necessary at once.

According to Apple documentation, the Grid is declared as follows:

@frozen struct Grid<Content> where Content : View

The Grid initializer is as follows:

Grid(alignment: Alignment, horizontalSpacing: CGFloat,  verticalSpacing: CGFloat, content: <a closure> )

This initializer will...