Deep Dive iOS 18 & SwiftUI 6: 80-Hour Project-Based Course
- Descrição
- Currículo
- FAQ
- Revisões
This course focuses on iOS development using the Swift programming language and the SwiftUI framework. You’ll start by learning the programming fundamentals of Swift. This is a project-based course, where each project introduces new language features and provides hands-on experience. The apps will be developed using the MVVM software design pattern, which complements SwiftUI and iOS development. Additionally, you’ll learn how to efficiently use Xcode, navigate the interface, utilize hotkeys, and create code snippets.
New content related to iOS 18 is uploaded regularly.
Here is a list of the topics we will cover and the apps we will create.
-
Xcode. We start by downloading Xcode and SF Symbols, adapting it to our needs and learning essential keyboard shortcuts.
-
The Swift Programming Language. We start with the basics of the Swift programming language, move on to slightly more advanced Swift topics, and then focus on a dedicated section of Swift coding exercises.
-
Extended Introduction to Swift. After getting our feet wet in the previous section we move onto a more systematic and comprehensive coverage of the Swift programming language.
-
Swift Coding Exercises. This section presents a range of coding exercises with different difficulty levels to help reinforce the concepts covered in the previous two sections.
-
Higher Order Functions and Functional Programming. Higher-order functions are integral to Swift and SwiftUI, so this section is dedicated to this crucial concept.
-
Greetings App. The aim is to introduce the fundamentals of SwiftUI and provide a brief glimpse into the capabilities of both Swift and SwiftUI. In this short app, we will explore essential layouts, animations, tap gestures, gradients (both linear and radial), multilingual support (including English, Spanish, and more), creating app icons for all devices, and enabling light and dark mode support.
-
Icons – Light, Dark and Tinted. In this brief section, we will explore icons in iOS 18, including light, dark, and the newly introduced tinted icons.
-
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
-
-
User Interface Exercise. Video-based exercises with solutions, testing our understanding of concepts from the previous section.
-
Data Flow in SwiftUI. Understanding @State, @Binding, @ObservedObject, @StateObject, @Published, Observable, and @EnvironmentObject.
-
Exploring Images. Scale to Fit and Fill, and AsyncImage.
-
Code Snippets. Utilizing code snippets to write programs more efficiently. While this topic is straightforward, it’s highly practical. In this section, we also cover helpful concepts such as:
– Page tabbed views
– Background colors
– Buttons
– Gradient text and masks
– Clean default views
– Avatars
– Clickable images linking to websites
-
Animations. Keyframes, Bounce, Phase, Breathe, Wiggle, Rotate, and Pulse animations
-
Gestures. Incorporating various types of gestures such as drag, tap, and magnify
-
Stylizing Text Views. String Interpolation, Markdown, Attributed Strings, Measurements, Pluralization with Inflection, and OpenURLAction and Text Renderer
-
Calculator. We implement a nice UI based on a beautiful design from dribbble. We support both light and dark mode and discuss state variables.
-
Brevis App – Hotkeys. A straightforward yet useful hotkey app designed to work seamlessly on iPhone, iPad, and macOS.
-
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.
-
Chinese Continuing App. This app includes unit testing, MVVM architecture, API calls using URLSession, and features a visually appealing splash screen with a random image.
-
Fizz Buzz. This app is built around the classic interview question known as Fizz Buzz. We start by exploring Xcode’s playground and then progress to developing an app focused on string manipulation. The app implements Fizz Buzz in multiple programming languages, including Swift, Rust, Go, C, and JavaScript/HTML, effectively creating a program that generates other programs. Additionally, we cover how to copy text to the clipboard and explore 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.
-
Activity Tracker – Pie Charts and Donut Charts with Swift Data. In this section, we dive into creating visual representations of data using pie charts and donut charts in Swift, leveraging Swift Data for robust data management and visualization.
-
Line Plots. In this section, we explore line plots with a focus on various intriguing topics. We start by creating random line plots and then move on to examining Lissajous curves, including their parameterizations. We’ll also cover essential graphics functions, delve into implementing trigonometric functions, and illustrate the prime number theorem through visual representation. This comprehensive approach provides a solid understanding of how to use line plots to convey complex mathematical concepts and data.
-
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. In this section, we delve into Swift Data, an alternative to Core Data. We will explore its features and benefits, examining how it streamlines data management and integration within Swift applications.
-
Building and Deploying Titanic Survival Predictions with CoreML and CreateML. This brief section is designed to give you an introduction to the capabilities of CoreML and CreateML by exploring a practical example: predicting Titanic passenger survival. We’ll start with preparing and preprocessing the Titanic dataset, then use CreateML to train a predictive model, and finally, integrate the model into an iOS app using CoreML. This hands-on exercise will offer a taste of the power and ease of Apple’s machine learning tools, demonstrating how they can be applied to real-world data and applications.
-
Alarm App. This section is a key highlight of the course. We draw inspiration from a design on Dribbble to build a sophisticated user interface that supports multiple languages, including English, Spanish, French, Italian, German, and Turkish. The complexity of the UI provides a great opportunity to work with advanced design elements such as navigation stacks, tab views, grids, shapes, and date pickers. We also create a custom toggle button using tap and drag gestures, states, and bindings.
In addition, we delve into advanced topics such as async-await and, notably, local push notifications, which are essential for engaging users with timely updates. We explore the use of environment objects, published properties, state management, and bindings, with a particular focus on how these concepts are applied throughout the app, especially in the context of local notifications. This section offers a comprehensive look at these powerful tools and techniques, showcasing their application in creating a robust and interactive app.
-
Conway’s Game of Life. This exercise is based on a classic programming challenge developed by the late British mathematician John Conway, who is remembered for his contributions despite having passed away from COVID. In this version of the game, we extend the concept by allowing users to modify the game rules. Our focus will be on both the programming logic and creating an attractive user interface, including elements such as sliders, custom check boxes, and ForEach views.
-
Tip Calculator. My first thought was – not another tip calculator! However, this app stands out with its stunning design inspired by Dribbble. In this section, we dive into working with shapes, and place a strong emphasis on state management and bindings. Additionally, we ensure the app is fully localized and adapted for different modes, including light and dark themes, iPad and iPhone, as well as portrait and landscape orientations.
-
Flashcards App. As the name suggests, this app focuses on creating and managing flashcards. We place a significant emphasis on implementing tap, magnification, and drag gestures within the app.
-
Mystic Puzzle Game: Mastering the 15-Puzzle Challenge in SwiftUI. Dive into the world of classic puzzles with the Mystic Puzzle Game, also known as the 15-puzzle game. This engaging project challenges you to shuffle 15 tiles, leaving one space empty, and requires users to strategically move the tiles back into their correct positions.
In this course section, you’ll explore more than just a visually appealing interface. We tackle the intricate logic behind the puzzle, making it a stimulating programming exercise. You’ll learn how to implement complex algorithms and state management in SwiftUI while creating a smooth, interactive user experience.
-
Quote of the Day App. In this section, we’ll utilize a quote API to learn how to fetch data from the internet—a crucial skill for many apps. Additionally, we’ll explore the use of custom fonts to enhance the app’s design and user experience.
-
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
-
5Introduction to Swift FundamentalsVídeo Aula
-
6Variables and Let constantsVídeo Aula
-
7String Arrays and For LoopsVídeo Aula
-
8Structs and Arrays of StructsVídeo Aula
-
9Optionals, if, if letVídeo Aula
-
10A Note about Line BreaksVídeo Aula
-
11Int, Double, Float, Type ofVídeo Aula
-
12Division, Modulo, more For Loops and If StatementsVídeo Aula
-
13Simplifying the Code with a FunctionVídeo Aula
-
14Multiline StringsVídeo Aula
-
15More on loops (for, while, repeat)Vídeo Aula
-
16The Guard StatementVídeo Aula
-
17Tuples and Named TuplesVídeo Aula
-
18EnumerationsVídeo Aula
-
19Enumerations continuedVídeo Aula
-
20IntroductionVídeo Aula
-
21ArithmeticVídeo Aula
-
22Compound OperatorsVídeo Aula
-
23Compound Operators ContinuedVídeo Aula
-
24Strings, Escape Sequences, Multi-line and Raw StringsVídeo Aula
-
25Strings - Part 2Vídeo Aula
-
26Collections - Arrays and EnumeratedVídeo Aula
-
27Collections - SetsVídeo Aula
-
28Collections - DictionariesVídeo Aula
-
29Control Flow - LoopsVídeo Aula
-
30Conditionals - If Statement, Expression, Ternary OperatorVídeo Aula
-
31Conditionals - Switch Statement and ExpressionVídeo Aula
-
32Conditionals - Switch - Tuples and IntervalsVídeo Aula
-
33FunctionsVídeo Aula
-
34ClosuresVídeo Aula
-
35Multiple Trailing ClosuresVídeo Aula
-
36Coding Exercises IntroductionVídeo Aula
-
37Exercise - Divisible by 7Vídeo Aula
-
38Solution - Divisible by 7Vídeo Aula
-
39Exercise - Divisible by D and range of divisorsVídeo Aula
-
40Solution - Divisible by D and range of divisorsVídeo Aula
-
41Exercise - Loops - Power FunctionVídeo Aula
-
42Solution - Loops - Power FunctionVídeo Aula
-
43Exercise - Loops - Sums of PowersVídeo Aula
-
44Solution - Loops - Sums of PowersVídeo Aula
-
45Exercise - Counting OccurencesVídeo Aula
-
46Solution - Counting OccurencesVídeo Aula
-
47Exercise - Character RectangleVídeo Aula
-
48Solution - Character RectangleVídeo Aula
-
49Exercise - Sum of N PowersVídeo Aula
-
50Solution - Sum of N PowersVídeo Aula
-
51Exercise - My CosineVídeo Aula
-
52Solution - My CosineVídeo Aula
-
53Exercise - My LogarithmVídeo Aula
-
54Solution - My LogarithmVídeo Aula
-
55Discussion - My Logarithm - "Bug"Vídeo Aula
-
56Print Sorted Names of NumbersVídeo Aula
-
57Solution - Print Sorted Names of NumbersVídeo Aula
-
62Introduction to the Greetings AppVídeo Aula
-
63Introducing modifiersVídeo Aula
-
64More Text Views in a VStackVídeo Aula
-
65Adding a ViewVídeo Aula
-
66Adding a Struct and an Array of StructsVídeo Aula
-
67Simplifying the code with the ForEach viewVídeo Aula
-
68Add the Greeting Title and some SpacersVídeo Aula
-
69Cleaning up the code by refactoring and adding a background colorVídeo Aula
-
70Adding a cool gradient backgroundVídeo Aula
-
71Random color on tap gestureVídeo Aula
-
72Rotation animation of a circle using a @State variableVídeo Aula
-
73Creating a Random SubtitleVídeo Aula
-
74Dark ModeVídeo Aula
-
75Creating an App iconVídeo Aula
-
76Clear the background of the App iconVídeo Aula
-
77Create a Launch ScreenVídeo Aula
-
78Adding documentation to the ViewsVídeo Aula
-
79Localization using String Catalog "New way"Vídeo Aula
-
80Code Factorization and some thoughts on Landscape mode and iPad supportVídeo Aula
-
81Landscape ViewsVídeo Aula
-
82Adapting to Portrait and Landscape modeVídeo Aula
-
83Supporting iPadVídeo Aula
-
84Change Language UI and Context MenuVídeo Aula
-
85Change Language and Persist using AppStorageVídeo Aula
-
86First TipKit ExampleVídeo Aula
-
87Appendix: Replacing the Context Menu with a MenuVídeo Aula
-
88Adapting to MacVídeo Aula
