This is part of the "iOS and SwiftUI for Beginners" learning path. View Path

Your First iOS & SwiftUI App: Polishing the App

Mar 1 2022 · Video Course (3 hrs, 49 mins) · Beginner

This course is the sequel to “Your First iOS & SwiftUI App: An App from Scratch.” In this course, we’ll finish off our “nice-to-haves” on our programming to-do list for Bull’s Eye, resulting in a professional and polished app.


  • Swift 5.5, iOS 15, Xcode 13

SwiftUI Views & View Modifiers


2:23 Free

Get a preview of all the things you’ll learn throughout this course.


Learn about more view modifiers including padding, foregroundColor, background, and cornerRadius, and use those to style the “Hit Me” button in Bull’s Eye.


Colors & Gradients

12:49 Free

Learn how to apply custom colors and gradients to your SwiftUI views.


Dark Mode

3:30 Free

Learn how to support dark mode in your iOS apps.


Try adding a new color to the asset catalogue for the text views, and then apply that to all the views in the app.


Extract Views

11:00 Free

Learn how to keep your SwiftUI code clean and organized by extracting your views.


Practice extracting views by extracting reusable slider text, slider, and hit me button views.


Learn how you can draw shapes in SwiftUI and fill and stroke them with color.



6:37 Free

SFSymbols is a massive collection of symbols and icons that you can use in your apps. Let’s learn how this works.


Practice drawing some shapes by applying them to your reusable views.


Put together everything you have learned by creating a reusable background view, with buttons to reset the game and show the leaderboard.


Practice everything you’ve learned so far in this course, by creating the views necessary for the background view’s bottom views.



0:57 Free

Let’s review where you are with your programming to-do list, and discuss what’s next.


Swift Coding Challenges


1:08 Free

Let’s review what you’ll be learning in this part, and why it’s important.


Try adding a new method to your Game data model that you can use to start a new round of the game.


The Xcode Debugger

10:57 Free

There’s a subtle bug where Bull’s Eye doesn’t calculate the correct score. Learn why this is happening, and how to fix it, with the power of the Xcode Debugger.


Get some practice with coding basics by giving the user bonus points if they are very close to the target.


Get some more coding practice by implementing the “Start Over” button in Bull’s Eye.


Draw the Rings

5:03 Free

Draw the cool rings in Luke’s design with the power of SwiftUI’s ForEach.


Try changing the color of the rings from black to a nice gradient.


Learn how you can use the environment property wrapper to detect if the app is in light mode or dark mode.


Try fixing the slider so it is centered on the screen and within the rings.



0:42 Free

Let’s review where you are with your programming to-do list, and discuss what’s next.


A Custom Alert


0:43 Free

Let’s review what you’ll be learning in this part, and why it’s important.


Try implementing several more text styles that we need for the custom alert.


Try creating the custom alert itself, by using the building blocks we created earlier.


Learn how to display a custom alert in SwiftUI by dynamically modifying view hierarchy.


Get a crash course in SwiftUI animation and use it to make the custom alert smoothly animate onto the screen.


Learn why it’s important to avoid magic numbers in your code, and how you can avoid them by using named constants.


Learn about some of the most helpful Xcode shortcuts you can learn to supercharge your day-to-day development.



0:39 Free

Let’s review where you are with your programming to-do list, and discuss what’s next.


A Second Screen


0:42 Free

Let’s review what you’ll be learning in this part, and why it’s important.


As the first step to create our leaderboard view, we’ll start by creating a view for a single row inside the leaderboard.


Now that we’ve implemented a view for a row within the leaderboard, we can start putting together the main view for the leaderboard.


Learn how you can use iOS size classes to adjust the layout of the view based on whether there is a compressed amount of horizontal space.


Learn one way you can display an extra screne of content in your SwiftUI app, using View’s sheet() method.


Learn the basics of using Swift arrays using Swift Playgrounds.


Using what you learned about Swift ararys, try integrating leaderboard entries into the app’s data model.


Learn how to hook up the leaderboard data model to the leaderboard view.


Learn how to set up your app icon, and how to change the display name of your app.


Learn how to run your app on your own physical device so you can carry it around and show it off to your friends!



1:29 Free

Let’s review what you learned in this course and discuss where to go from here to continue your iOS and Swift learning journey.


Next course in this Learning Path

Version history

iOS 15, Swift 5.5, Xcode 13 (Selected)

Mar 1 2022

iOS 14, Swift 5, Xcode 12

Dec 16 2020

Who is this for?

This course is for students who have completed “Your First iOS and SwiftUI App: An App from Scratch”, where we developed the “must haves” on our programming to-do list for a simple iOS game called Bull’s Eye.

In this course, we’ll finish off our “nice-to-haves” on our programming to-do list, resulting in a professional and polished app.

Not only will the app look much better, but the code will be much cleaner and well organized too. You’ll learn how to extract your SwiftUI views in order to keep your code clean, reusable, and maintainable, and you’ll continue to use test-driven development to build out and expand your app’s data model.

You’ll also learn about tons of handy techniques that you’ll be using all the time as a professional iOS Developer, including how to use SFSymbols, SwiftUI Animation, Size Classes, and so much more.

By the end of this course, not only will you have created your first app, but you’ll have created a polished app that can carry around in your pocket, an show of to your family and friends.

This course isn’t suited for intermediate or advanced developers. If that’s you, check out our intermediate or advanced video courses for more ways to level up your developer skills.

Covered concepts

  • More SwiftUI View Modifiers
  • Colors and Gradients
  • Supporting Dark Mode
  • Extracting SwiftUI Views
  • Filling and Stroking Shapes
  • SFSymbols
  • The Xcode Debugger
  • The Environment Property Wrapper
  • Xcode Shortcuts
  • Size Classes
  • Swift Arrays
  • App Icon & Display Name
  • Running on Your Own Device