Deep Dive iOS 17 Swift / SwiftUI Programming
Project-based approach to iOS 17 development using the MVVM design pattern in SwiftUI and the Swift Programming language
Description
This course focuses on iOS development dedicated to iOS programming using the Swift programming language and the SwiftUI framework. You will learn programming fundamentals of the Swift programming language. This is a project based course. In each project you will learn about more features of the language and gain more experience. The Apps will be written using the MVVM software design pattern which goes hand in hand with SwiftUI and iOS development. You will also learn how to efficiently use Xcode, navigate, use hotkeys and code snippets.
Here is a list of the topics we will cover and the Apps we will create.
Basics. The goal is not to give an encyclopedic treatment, rather cover a large chunk of the fundamentals and then quickly dive into as many apps as possible where we use these basics and beyond.
Programming basics, i.e. variables, constants, arrays, loops, structs, conditionals, basic data types, guard, tuples, enumerations, etc.
HStack, VStack, ZStack, gradients, colors, text, alignment, frames, rotations, grids, images, AsyncImage
Working with code Snippets in order to write programs more efficiently. This topic is rather simple but quite useful. We also cover useful topics in this sections such as
Page tabbed views
Background colors
Buttons
Gradient text and masks
Nice default views
Avatars
Clickable images which link to a website
Greetings App. The goal is to explore some basics of SwiftUI. In this short App we learn about basic layouts, animations, tap gestures, gradients (linear and radial), support for multiple languages such as English, Spanish, etc, creating an App icon for all devices, support for light and dark mode.
Swift Macros. We cover the new Swift Macros available as of iOS 17.
Calculator. We implement a nice UI based on a beautiful design from dribbble. We support both light and dark mode and discuss state variables.
Recipe App MVVM. This is the first App in the course that covers the MVVM design pattern which is central in this course. We also cover basic navigation and lists and custom views in this section.
Fizz Buzz. This App is based on a standard interview question called Fizz Buzz. We learn about Xcode's playground and then we move on to an app that relies heavily on String manipulation. We write an App that implements Fizz Buzz in several programming languages such as Swift, Rust, Go, C, Javascript/HTML. So we write a program that writes programs. Moreover we learn how to copy text to the clipboard and we discover the context menu.
HTML to Color Extension. In this section we write code that converts HTML to usable code in SwiftUI. Namely we automate the creation of color extensions which will be used in the Charts App of our course (or in any app for that matter).
Exploring Charts. We create charts using the SwiftUI Charts framework. Using drag gestures in the charts. Horizontal and vertical bar charts, line charts, area charts.
Core Data Math Game. We create a math game focusing on MVVM and Core Data. In addition like most of the apps in the course, the app supports multiple languages out of the box via localization.
Swift Data. We explore Swift Data as a new alternative to Core Data available as of iOS 17.
Alarm App. This is one of the highlights of the course. We largely base the UI on a design from dribbble. We support multiple languages out of the box, namely English, Spanish, French, Italian, German, Turkish. The UI is highly complex so this is an excellent opportunity to work with nice UIs. We work with navigation stacks, tab views, grids, shapes, Date pickers, etc. We even create a custom toggle button using tap and drag gestures, states and bindings. Moreover we cover advanced topics such as async-await (introduced in iOS 15) and local push notifications. We also discuss Environment objects, Published, State and Binding. (These topics are covered in most of the Apps but in the alarm app this is used frequently.)
Conway's Game of Life. This is a standard programming exercise introduced by the British mathematician John Conway (check out the Wiki) who sadly passed from Covid. We generalize this game in the sense that the user can change the rules of the game. Once again we focus both on actual programming logic and on a nice UI such as working with sliders, constructing custom check boxes, ForEach views, etc.
Brevis App - Hotkeys. This is a relatively simple MVVM-based App that animates the background and rotates a custom card view.
Tip Calculator. My first thought was - not another tip calculator! To make things interesting this App is based on a beautiful design from dribbble. We also work with Shapes in this section and there is a major focus on State and Bindings.
Flashcards App. The name is self-explanatory. There is a major focus on tap, magnification and drag gestures in this App. As usual we follow the MVVM design pattern. We also create rotating cards (similar to what we have seen in the Brevis App).
Mystic Puzzle Game. This is also referred to as the 15 puzzle game. In this game we shuffle 15 titles with one empty title and the user must move the tiles back into place. This project has highly not trivial logic and not just a nice UI.
Quote of the Day App. This uses a quote API, in other words we will learn how to grab data off the internet which is very important in many other apps. Amongst other things we use custom fonts in this section.
Speed code a Chill Meditation App. We create a very simple meditation in 30 minutes flat. This is to show what can be done easily in SwiftUI with very little time and effort.
Multilingual Animals. This can be viewed as an educational game for children. The main goal of this project is to learn how to support text to speech in multiple languages, namely, English, Spanish and French. Of course other languages can easily be supported.
The remaining four apps focus on the frontend. All based on designs from dribbble. Namely.
Body Shape UI.
Meditation App UI.
Finance App UI.
Task Manager UI.
Moreover this course is dynamic in the sense that I will regularly post more material of my own and/or in response to specific requests from students.
I hope you enjoy this course as much as I enjoyed creating it. Also make the code your own. Experiment and be creative. Try to implement an App idea of your own.
Feel free to ask questions in the Q & A or message me directly. I'm always happy to answer questions and check for questions twice a day.
Happy programming and have a Great day
Ron
What You Will Learn!
- Learn to build an iOS 17 App
- Learn good programming practices
- Learn MVVM design pattern
- Have fun programming and exploring
Who Should Attend!
- Beginner-intermediate programmers or anyone wanting to learn to program iOS 15 and iOS 16 using SwiftUI