Book Image

Learn SwiftUI

By : Chris Barker
Book Image

Learn SwiftUI

By: Chris Barker

Overview of this book

SwiftUI is the new and powerful interface toolkit that lets you design and build iOS, iPadOS, and macOS apps using declarative syntax. It is a powerful way to develop the UI elements of applications, which would normally be tightly coupled to application logic. Learn SwiftUI will get you up to speed with the framework and cross-device UI development in no time. Complete with detailed explanations and practical examples, this easy-to-follow guide will teach you the fundamentals of the SwiftUI toolkit. You'll learn how to build a powerful iOS and iPadOS application that can be reused for deployment on watchOS. As you progress, you'll delve into UI and unit testing in iOS apps, along with learning how to test your SwiftUI code for multiple devices. The book will also show you how to integrate SwiftUI features such as data binding and network requests into your current application logic. By the end of this book, you will have learned how to build a cross-device application using the SwiftUI framework and Swift programming.
Table of Contents (17 chapters)

Learning about existing UI frameworks

With all great programming languages come great frameworks—in particular, UI frameworks. In the case of Apple, UIKit has been the UI framework of choice since Objective-C, offering everything from labels, fonts, and buttons, to animation.

Written in Objective-C, UIKit has been the binding of the iPhone UI for all developers since the beginning. With a multitude of public APIs and documentation available to developers and solid support from the community, there has been little else to offer in terms of alternatives for Apple development.

Without UIKit, everyday interactions such as tap, pinch, and zoom gestures for drawing wouldn’t be available. UIKit is even responsible for accessibility, which we'll touch on later on in this book.

The binding between UIKit and Swift can be performed in two ways: programmatically or through the Interface Builder.

Creating the UI programmatically

Creating the UI programmatically involves writing around five lines of code, such as in the following example:

As seen in the preceding screenshot, you first need to create an instance of the UIButton, set the frame (origin and size), set the background color, give the button's label some text, set a tap gesture (what happens when you tap the button), and then add the gesture to the button.

All this is done before we even place the button within our view hierarchy, not to mention writing the code to determine what happens when we tap the button.

All in all, quite a few lines of code—for something that could end up being a simple operation.

Creating a UI via Interface Builder

The second way is via Xcode's Interface Builder. Interface Builder is a built-in graphical user interface (GUI) that allows you to use either XML Interface Builder (XIB) files, NeXTSTEP Interface Builder (NIB) files, or Storyboards to design and create your layout with ease. With Interface Builder, you can simply drag and drop components such as Views (UIView), labels (UILabel), and Image Views (UIImageView) straight onto a canvas that can be wired straight into your code. The following is an example of how a button is created in Interface Builder and shows the code to handle the button's tap event:

Interface Builder was not always part of Xcode's integrated development environment (IDE). It was originally an independent application that ran in parallel with Xcode.

Although highly regarded by the Apple community, with the introduction of Swift UIKit slowly started to show its age. Swift's clean and compact syntax started to look bloated and untidy when asked to perform simple tasks, such as creating a frame for a button or performing an animation.

Many thought that this was simply how it was going to be from now on, with a focus on bringing UIKit to macOS deemed to be a greater necessity. But little did we know that Apple was about to change the way we build apps, for the foreseeable future.

In June 2019, at WWDC, Apple introduced us to SwiftUI.