
Learn iOS development with Swift and SwiftUI through a project-based, hands-on course, from Xcode setup to building and deploying basic iOS apps, with contextual learning.
Take a quick preview of what we will be building for the first section: The Hello World app. It may seem simple, but there in fact a lot to learn from this very simple app!
Create a new Apple ID and attach a dedicated developer account to separate finances and simplify collaboration for this course, using the free developer account for now.
Learn how to get Xcode 12 beta from the developer tools page, including download steps and space requirements. Also learn how to access the release via the Mac App Store.
Create a new Xcode project for iOS, choose the iOS app template, configure product name and organization identifier, select SwiftUI, and save the project in a Projects folder.
Explore how Xcode, an integrated development environment, combines a source code editor, debugger, and compiler to turn Swift into machine language, then navigate five interface areas and use the simulator.
Explore the project navigator to identify the three core items: Hello World app code, assets, and the info plist, and how folders organize them.
Explore the basic app structure by turning a castle blueprint into swift code, mapping to swiftui elements like scenes, body, and a hello world text.
Create a custom view in SwiftUI by composing primitive views into a struct that conforms to the view protocol and implements a body, using a window group as entry point.
Implement a custom SwiftUI view by defining a struct that conforms to the view protocol, providing a container with text, moving it to a separate file, and running the app.
Modify text views with view modifiers using dot notation, adjusting font weight, size, color, and background. Understand modifier order and chaining to create a clean layout and full screen background.
Learn to add an app icon by using an app icon generator to create all required sizes for iPhone, iPad, and Mac, then replace the Xcode assets folder and build.
Connect your iPhone to your Mac with the cable, trust the computer, enable signing and provisioning, and set the deployment target to iOS 14.0 to run on a real device.
Design a digital vision board app that places nine images in a grid to represent dreams and goals, with placeholder images to code along.
Set up a vision board project in Xcode 12, configure the workspace, disable the preview canvas, and run the iPhone 11 Pro simulator to view changes.
Add project assets to the assets folder by dragging placeholder images and the app icon into Xcode, then delete the app folder and set 2x/3x to single scale in inspector.
Learn to display images in SwiftUI, resize with frame and sizeable, preserve aspect ratio using the aspect ratio modifier and content mode for fit or fill, plus corner radius.
Combine images using SwiftUI stacks: HStack for horizontal, VStack for vertical, and ZStack for overlays; adjust spacing and build a 3x3 grid, then refactor for readability.
Refactor the app by creating a reusable grid item view as a template, driving nine images in a 3x3 grid with a single filename input.
Refactor the grid item view to accept an image name string as a parameter, replacing a fixed string with different image names so every grid item can display different images.
Distill the difference between variables and constants in swift, using a playground to show runtime changes with an open box variable and a sealed box constant.
Learn how computed variables define their values at runtime by using string interpolation to derive a string from a changing number, demonstrating recomputation when the input changes, unlike regular variables.
Explore how Swift structs serve as blueprints to instantiate data models, using a storybook example to create and access properties like title, author, and year.
Explore data types in Swift by identifying boolean, integer, float, double, and string, and see how arrays and structs create new types through instantiation.
Build a push-up counter app with a single button and a label, where each button press increments the count and the counter resets to zero if you stop pressing.
Set up a new Xcode project for the push up counter, configure the workspace, remove previews, and customize the development environment with a dark theme and adjustable syntax colors.
Design a SwiftUI user interface by building a label and a circular 100 by 100 button with bold large-title text, system colors, kerning, and padding; prepare for refactoring.
Refactor the code by introducing new SwiftUI views, including a workout label and button, using a constant for the label, and wiring them into the content view.
model a push ups counter as a class that tracks completed push ups and increments count with a function. start from zero and wire a button to call increment.
Connect a push-up robot model to a SwiftUI button via an on tap gesture to add one push up and update completed push ups; use the console print for debugging.
Demonstrates string interpolation to convert the integer completed push ups into a string for display in a TextView, and updates the UI when the push up button is tapped.
Discover why a SwiftUI button text fails to update when using a struct, and learn how state enables the view to update and recreate itself.
Upgrade the push a button with @StateObject to manage state, making it observe push up robot via ObservableObject and @Published changes that trigger the user interface updates.
Create a reset push ups function that sets completed push ups to zero and prints for debugging, then wire it to onLongPressGesture so a long press resets the state value.
Explore the differences between structs and classes in Swift, using the blueprint versus robot analogy to illustrate value versus reference semantics, copying versus referencing, and inheritance.
Learn how to convert integers and floats to strings using the string function and string interpolation, and apply these techniques to dynamic ui messages such as welcome and weather text.
Explore the three function configurations in Swift: void functions, input-taking functions, and input-output functions, illustrated by a baby robot performing spin, dance, bounce, walk, and sing.
Build focus app, a simplified Pomodoro timer that chunks work into time intervals, featuring a progress bar and a green checkmark to start, count down, and reset after ten minutes.
Create a time bar and time label in the content view using SwiftUI, and implement a text view for remaining time alongside an image view that uses SF symbols.
Design a time bar UI with a rounded background and a green progress bar in a ZStack, anchored to the bottom using a spacer and adjustable width and height constants.
Create a time robot to manage timetable functionality in SwiftUI, wiring on tap and long-press gestures to run and reset the focus timer, using observable object protocol and console prints.
Update the label state using time start and time remaining floats to drive a computed time remaining string that changes to 10 on tap and 0 on long press.
Initialize an optional timer, use a scheduled timer with a one-second interval, and a closure to run timer actions, decrementing time remaining and preparing to invalidate at zero.
Learn to invalidate a timer using optional chaining, handle optional timer safely, and reset focus timer with start and stop controls, preparing for if-else logic in the next lesson.
Use if-else statements to stop the timer at zero by checking time remaining and invalidating when it drops to one or less.
Learn to clean up a messy time robot class by using extensions to split main functions and marks to separate sections, boosting readability and organization.
Create a dynamic progress bar by computing its height from the time remaining in a shared time robot, updating as the timer counts down, and note desync from duplicate robots.
Share a single time robot across multiple views with the environment object, keeping the time label and time bar in sync via published properties.
Make the start time dynamic by adding an input parameter to initialize timer. Wire it into focused timer to support 10, 25, and 50 seconds and drive the progress bar.
Change the progress bar color with a computed variable that returns indigo for time start 10, blue for 25, purple for 50, or green otherwise, connected to the time start.
Refactor and rename the time robot to focus model, and restructure the project into models and views folders, while switching the timer to run every 60 seconds.
Explore if else statements with a baby robot, using operators like ==, >=, and != to trigger actions, and learn how top-to-bottom evaluation selects the matching condition.
Learn to combine multiple conditions in a Swift if statement using the and operator. Apply the or operator to handle 0 or 10, triggering the baby robot's reaction.
Explore what closures are and how to use them in Swift, demonstrating how a cooking robot and a shopping robot collaborate, with trailing closures and unnamed functions.
Dive into closures in Swift by building a timer example, using a scheduled timer with a trailing closure, and clarifying data types, parameters, and type inference.
Build a basal metabolic rate calculator in a SwiftUI app, capturing gender, age, height, and weight to compute calories per day.
Set up the project in Xcode, naming it Callery, and organize folders for content view, routes, and models. Troubleshoot file detection by rebuilding or restarting Xcode.
Build a reusable SwiftUI title card with a colored, rounded background, shadow, and stacked title and caption, plus a chevron right next button.
Create the remaining calories cards in SwiftUI—gender, age, height, weight, and basal metabolic rate result—using card background and label components with sliders, preparing for card-to-card transitions to collect user data.
Track the active card index with state to move between title, gender, and result cards in a SwiftUI content view, enabling animated transitions for basal metabolic rate calculations.
Implement a SwiftUI picker to select gender using a gender enum, bind it to a published model property, and present segmented options for male and female.
Implement SwiftUI sliders to capture age, height, and weight with binding doubles. Display the current value with a dedicated slider value view formatted as a zero-decimal string.
Create dynamic result views showing the bmr and calories per day, wire a published result to the UI, and implement male/female calculations behind a calculate button.
Upgrade the Kalari model by replacing the if statement with a switch on gender for clearer, readable code. Test male and female cases and organize views and components into folders.
Refactor II demonstrates moving gestures into the next and calculate buttons, and using @Binding to link the active card index with state for a two-way SwiftUI update.
Define enumerations in Swift with cases like nachos, pizza, sushi, and bread, then use a switch to exhaustively handle each option.
Explore switch statements in Swift, using specific values and ranges, handling negative and other unseen cases with a default, and combining conditions with commas to cover many inputs.
Learning iOS development and creating compelling apps can become a comfortable and enjoyable endeavour with the right course. iOS 14, Swift 5 & SwiftUI - The iOS Development Starter Kit is dedicated to creating the best possible learning experience with that in mind.
My name is Pao, the founder of Swift Starter Kit and your lead instructor for this course. You will learn how to build and deploy basic iOS apps from scratch using the latest and greatest in the Swift Programming language and the SwiftUI framework.
This course is for beginner-level developers who want to develop their own apps for the Apple ecosystem, primarily iOS and iPadOS. However, the skills you will gain from this course can also be used to create apps for macOS, tvOS, and watchOS. This course will focus primarily on development for iOS. You will learn everything about Apple app development and the Swift programming language from the ground up. No previous programming experience is necessary.
So what is the course all about? It’s about achieving three key things:
1. Learn the foundations of Programming with Swift, no experience needed
The first thing that you will learn is the foundations of programming using Swift. You will not need to know any programming concepts beforehand, but it will certainly help. I will be taking you from the installation of the Xcode IDE up until getting your apps running on a real device, and everything in between.
2. Learn SwiftUI, Apple’s native UI development framework
The second thing that you will achieve is learning how to use the SwiftUI framework. We will discuss this in more detail in the next lesson. Still, you should know that this course mainly focuses on SwiftUI, a new declarative framework for creating user interfaces built on top of the Swift programming language.
3. Build and Deploy iOS Apps from Scratch, specially tailored for beginner developers
The third thing you will achieve is creating 12 beginner-friendly apps that will teach you all the essentials of swift programming and Xcode app development. By the end of this course, you will have had seven apps that you can open and use on your iOS device. You can use these apps as a foundation of knowledge for building even more complex and robust apps.
So, why take this particular course?
1. A Project-Based Approach
This course tackles learning programming concepts through a project-based approach. This means you learn everything you need to know by creating projects in the form of apps. These projects are neatly organized to provide you with the best sequence to learn programming and app development.
2. Contextual Learning
This course also relies heavily on contextual learning, which means concepts are introduced when we need to use them. The power of contextual learning is in introducing the “why” of each idea, allowing you to better understand the reasons behind the lines of code and why we are using them. This reduces the need for long lectures and makes programming concepts much easier to understand and remember.
3. Hands-On Coding
Finally, this course is not just going to be pure theory, but instead will focus on getting your hands dirty in a very hands-on approach. You will learn programming and app development by creating and coding things with your own hands and developing your skills at an accelerated rate in the process.