
Choose between UIKit and SwiftUI for iOS app development, guided by introductory videos for each section, and learn that mastering one framework unlocks the rest of the course.
Compare SwiftUI and UIKit, highlight declarative vs imperative approaches, and guide choosing between SwiftUI first or UIKit first for job opportunities.
Build your first SwiftUI app with a three-option guessing game (cat, dog, fox). Explore VStack and HStack, content view, previews, and a simple score with three buttons.
Learn how to implement button logic and styling in swiftui by adding actions, testing with prints in the console, and customizing button appearance with frame, background color, and rounded corners.
Learn to push content to the top with spacers in vstack and hstack, and emphasize the score and a large question mark using system fonts and semibold weight.
Learn to implement game logic in SwiftUI by using a zero-based correct answer, random option display, and a state-driven score system with real-time UI updates via string interpolation.
Tap dog increments the score and tap cat decrements it, with a zero floor enforced by conditionals. Refactor introduces a check function to reduce repetition.
Learn to randomize the correct answer after each tap with an int random function and a 0..<3 range, manage state, and update the score in the check function.
Demonstrate SwiftUI state management by updating a dynamic game message, title, and subtitle, with a conditional ladder revealing the correct dog, cat, or fox and scoring changes.
This lecture builds the foundation by teaching the Swift programming language before SwiftUI, encouraging UIKit learners to study fundamentals, and guiding them to code along with the starter playground.
Learn to use print statements for debugging and observe outputs in the console. Explore creating single-line and multi-line comments to annotate code without affecting execution, using Swift syntax.
Explore mutability in Swift, contrasting immutable constants with mutable variables, and see how static typing and strings, numbers, and type safety prevent bugs in Swift apps.
Discover how Swift uses mutable vars and constants, camelCase naming, and self-descriptive identifiers, then learn numeric, string, and boolean types, type annotations, and casting to resolve type mismatches.
Explore how curly brackets create blocks and scopes, including global and nested scopes, variable visibility, and mutability. Emphasize four-space indentation to improve Swift code readability.
Understand how optionals represent no value with nil, compare non-optional and optional types, and learn safe unwrapping with if let, guard let, and optional binding.
Unwrap and bind optionals using if let, if var, and guard let, explore scope, else branches, and the guard exit condition with optional age examples.
Explore arithmetic operators, including addition, subtraction, multiplication, and division, with integers and floats, and learn operator precedence, parentheses, the remainder operator, and testing even numbers or multiples.
Master comparison operators and if-else logic, including ==, !=, >, <, >=, <=, with a bank withdrawal example that leaves at least $5 and demonstrates else if and guard usage.
Explore how to combine conditions with and, or, and not in Swift, using a bank withdrawal example to show booleans and conditional statements.
Explore the three operator types in swift—unary, binary, and ternary—and learn how to use not, and, or, and the ternary operator in swiftui to drive boolean logic.
Master string handling in Swift by exploring empty strings, isEmpty checks, and counting characters, then use concatenation and interpolation to build dynamic sentences.
Explore working with strings in Swift: adding strings, casting string to integers, handling optionals with if let, and using escape sequences and raw strings to control interpolation and formatting.
Explore enumerations to model finite sets like the colors of the rainbow and app themes. Use a switch to exhaustively handle enum cases, with grouping and a default.
Learn how functions in Swift encapsulate reusable logic using the func keyword, naming, and parameters. Explore returning values, optional parameters, default values, and nil handling.
Demonstrates creating a reusable make full name function in Swift with optional middle name, input validation, and safe returns using guard and if let, plus default parameters and argument labels.
Create and manipulate dynamic arrays in Swift by adding, removing, and indexing strings, learning count, last and first items, safely handling emptiness and out-of-bounds cases.
Explore dictionaries as unordered key–value collections in Swift, with string keys and int values for student grades, including adding, updating, removing entries, optional lookups, and type casting.
Learn how to use for loops to iterate arrays and dictionaries, enumerate indices, and format output with string interpolation, plus closed and half-open range, and while and repeat while loops.
Create named types in Swift by using enums, structures, and classes, and instantiate examples like cat, dog, and colors of the rainbow to see value versus reference types.
Model a social app user as a structure with username, optional bio, and actions such as like and comment, and learn about init, self, and value-type behavior with copies.
Explore how structures promote immutability and safety, serving as an alternative to classes. See default initializers, mutating methods, and built-in types like strings and ints illustrate this design in Swift.
Explore how classes differ from structures in Swift, including initializers, mutability, and reference semantics, and learn why structures copy independently while classes enable shared state.
Explore stored, lazy, computed, and type properties in swift, using a cat example to show initialization, observation with willSet and didSet, and the static keyword for type properties.
Explore how access control governs visibility of properties and classes in Swift, from internal defaults to private and file private, and learn when public or open exposure matters in modules.
Open Xcode and create a brand new app named intro to SwiftUI. Set a reverse-domain organization identifier, choose SwiftUI interface and Swift language, and review content view and preview.
The @main attribute designates the app entry point, and a struct conforming to App represents the entire application. Scenes and the window group define the first content view.
Explore the opaque return type and the computed var body as a scene container, using window group to present content view and root view across iOS and macOS platforms.
Discover how the content view acts as the app’s root in swiftui, using a vscode? no, using a VStack with image and text, and how the canvas preview shows updates across simulators and devices.
Employ opaque return types to flexibly return any kind of view in SwiftUI, hiding concrete types like vstack, hstack, text, images, and buttons while building versatile UIs.
Uncover decomposition as a core programming tool by breaking complex problems into smaller parts. Identify functions, classes, and structures to understand their roles and how they form the whole.
Apply black box programming by using well-designed classes and functions without needing to know their internal workings, focusing on how to use Swift frameworks effectively.
Begin a new SwiftUI project to learn views and layout, name it views and layout, and set interface to SwiftUI with Swift language, storage none, and no tests.
Explore how VStack, HStack, and ZStack organize views in SwiftUI by stacking content vertically, horizontally, and in layers, including images, text, and shapes.
Explore how SwiftUI stacks and z-stacks act as compound parent views, distinguishing expanding and hugging views, and learn how frame, alignment, and safe areas shape layout.
Explore how alignment, spacing, and frame interact in SwiftUI layouts, showing how frames bound stacks, how leading and trailing differ, and how to adjust default spacing.
Learn to use a spacer to push an image left and text right, and control layout with padding, including vertical, horizontal, and directional padding like top, bottom, leading, and trailing.
Explore how to absolutely position views in SwiftUI with the position modifier and CG points, compare it to the relative offset, and understand the iOS coordinate system for layout.
Explore how the geometry reader lets you position views relative to the device size, balancing with automatic layouts, padding, and stacks, and learn how padding and spacing affect alignment.
Master the fundamental SwiftUI views, including text and image, and build familiarity as you start a fresh project. Begin with a clean VStack to learn these core views.
Explore how to use the text view in SwiftUI, modify font and weight, apply predefined or custom fonts, and adjust color, alignment, line spacing, and padding for accessible typography.
Discover how to use SF symbols to display system images, explore the San Francisco Symbols app, and apply rendering modes, colors, and font size to integrate icons with text.
Learn to add custom images in one asset catalog, choose PNG, SVG, PDF, or JPEG formats, and use rendering modes, aspect ratios, and light/dark variants to maintain quality.
Explore built-in SwiftUI shapes such as rectangle, rounded rectangle, capsule, ellipse, and circle; learn frame constraints, fill and stroke, and iOS 17 color approaches.
Learn how to use colors in SwiftUI, create color sets in asset catalogs for light and dark modes, and apply RGB, hex, and UI color approaches.
Learn to create and customize buttons in SwiftUI using title key, action, and label; build text and image buttons with an H stack and role options like cancel and destructive.
Learn how SwiftUI uses state to monitor keystrokes, bind data to views, and store text field input in variables, then create a new project focused on state and binding.
Explore how state in SwiftUI mutates a counter in a view with the state property wrapper. See how wrapped and projected values, and single source of truth, prepare for binding.
Learn how to use state and binding in SwiftUI to create a single source of truth, pass state to subviews, and propagate changes via wrapped and projected values.
Explore creating and binding a SwiftUI text field, using a placeholder and state binding, then customize with padding, font, keyboard type, and text content type.
Build a multi-line text editor in SwiftUI bound to a bio string, using state and frame height, background, padding, clip shape, and overlay borders for polished input.
Explore how chaining modifiers transform views, applying font, color, and frame, and learn how the order of modifiers and type restrictions affect rendering.
Build a SwiftUI sign up form from scratch, layering a gray background with username, email, and password fields, plus a full-width rounded-submit button and basic validation alerts.
Learn to build a sign-up form in SwiftUI that shows an alert on submit only when username, email, and password are nonempty, with inline red error messages for missing fields.
Welcome to the most comprehensive iOS course, covering everything you need for iOS app development. This course was specifically designed to guide you from an absolute beginner to a senior iOS developer. Rather than hop from one iOS course to the next to fill knowledge gaps, you'll find everything you need in one place.
This course teaches both UIKit and SwiftUI. UIKit is the established framework used to build iOS apps and remains particularly job-relevant, with an estimated 70% to 80% of companies still requiring it. SwiftUI represents the future of iOS app development and is rapidly gaining adoption, especially among startups. You can choose to learn both frameworks or focus on just one. Whether you're joining this course to land a job that requires UIKit or planning to build your own apps with SwiftUI, this course adapts to your goals.
This course is ideal if you've never developed an app before. It begins with the fundamentals and progresses at a steady pace toward more advanced topics. The curriculum I use here has been refined through hundreds of one-on-one mentorship sessions with my students. It features code-thinking techniques illustrated with animations, and emphasizes hands-on app building over theory to keep you engaged.
Practice makes perfect. That's why this course includes over 18 production-grade apps you'll build to gain the hands-on experience needed for real-world development. You'll create a diverse range of applications, including an e-commerce app with Apple Pay, a location-based app using the Google API, an AI-powered homework assistant, and much more. By building production-grade apps, you'll learn how to create real-world applications, not just tutorial projects. Each app follows industry-standard coding conventions and design principles.
AI and machine learning are the cornerstone of today's modern apps. This course features dedicated modules on AI and machine learning development. You'll learn how to implement existing machine learning models, train your own models, and integrate LLMs like ChatGPT to create AI-enhanced applications.
Whether you're aiming to launch your career as an iOS developer, create your own apps, or modernize your development skills, this course provides you with the complete toolkit you need. I've designed every aspect of this course—from the project-based learning approach to the comprehensive curriculum—to transform you into a confident and capable iOS developer. The App Store is waiting for your next great idea, and this course will help you bring it to life. Enroll today!