Preparing an App for Production: Assets, Icons & Launch Screens

iOS Development — Production & Publishing

Chapter 1 · Preparing an App for Production: Assets, Icons & Launch Screens

Architecture & Data's own capstone left TaskFlow feature-complete but genuinely unpolished — no real icon, no configured launch screen, no real distinct identity of its own. This course starts by turning it into something that looks, and is configured, like a real app ready to ship.

The Asset Catalog: Assets.xcassets

Every real Xcode project ships with one central asset catalog — a structured real container for icons, images, and colors, managed visually inside Xcode rather than as loose files.

AppIcon

A real, dedicated icon set — the app's own real identity on the Home Screen and throughout the system.

Image Sets

Real images, optionally with distinct 1x/2x/3x variants for different real screen densities.

Color Sets

Named real colors — Color("AccentColor") — that can define genuinely different values for light and dark mode.

A Real, Genuinely Simplified App Icon Requirement

Older Xcode versions once required a full real set of icon images at many specific sizes. The current, real requirement is dramatically simpler: a single 1024×1024 image in the AppIcon set — Xcode itself generates every other real size the system actually needs (Home Screen, Settings, Spotlight, notifications) automatically from that one source image.

A Real, Genuine Requirement on the Source Image Itself
The real 1024×1024 source image must have no transparency — a real, fully opaque background — and no rounded corners of its own; the system applies real corner masking automatically at every displayed size. Submitting an icon with transparency is a real, common App Store Connect rejection reason, covered again once Course 3 reaches submission.

Real Color Sets for Light & Dark Mode

Text("TaskFlow") .foregroundStyle(Color("BrandAccent"))

A real Color Set named BrandAccent, defined once in the asset catalog with a distinct value for the "Any Appearance" and "Dark" variants, means Color("BrandAccent") automatically resolves to the correct real color depending on the system's own current appearance — no manual @Environment(\.colorScheme) branching needed anywhere in the app's own real view code for something this simple.

The Launch Screen: A Real, Storyboard-Free Approach

A launch screen is shown real, briefly, the instant an app starts, before its actual first real view renders — giving the system something immediate to display rather than a blank window. The current, real, recommended approach needs no separate storyboard file at all:

<key>UILaunchScreen</key> <dict> <key>UIColorName</key> <string>BrandAccent</string> <key>UIImageName</key> <string>LaunchLogo</string> </dict>
A Real, Deliberately Minimal System
A real UILaunchScreen dictionary in Info.plist — even an empty one, <dict></dict> — is enough to satisfy the system's own requirement for something to show at launch. It's deliberately not meant to be a real, animated splash screen or a place for genuine app logic — it exists purely as a brief, real visual bridge before the actual app's own first screen is ready.

Display Name & Bundle Identifier

SettingReal Role
CFBundleDisplayNameThe real, user-visible name shown under the Home Screen icon — can genuinely differ from the Xcode project's own internal name.
Bundle IdentifierA real, reverse-DNS-style unique string (e.g. com.osztromok.taskflow) identifying the app to the system and to App Store Connect — genuinely difficult to change once real users have installed it.
Set This Early, Deliberately
The real bundle identifier is tied to every later step this course covers — signing, TestFlight, App Store Connect all key off it directly. Choosing it carefully now, rather than changing it later, avoids real, genuine rework in every one of those later chapters.

Hands-On Exercises

Exercise 1

Add a real 1024×1024 image to TaskFlow's own AppIcon set in Xcode, and explain, in your own words, why that source image must have no transparency, connecting your answer to how the system displays it at smaller real sizes.

📄 View solution
Exercise 2

Define a real Color Set named BrandAccent with a distinct value for light and dark appearance, then use it via Color("BrandAccent") in TaskFlow's own TaskListView navigation title styling.

📄 View solution
Exercise 3

Explain, in your own words, why a real bundle identifier like com.osztromok.taskflow is genuinely riskier to change later than most other project settings, once real users have already installed the app.

📄 View solution

Chapter 1 Quick Reference

  • Assets.xcassets — the real, central home for app icons, images, and colors
  • A single, real, opaque 1024×1024 source image is all AppIcon needs — Xcode generates every other real size automatically
  • Real Color Sets let one named color resolve differently for light vs. dark mode, with zero manual branching in view code
  • The real, current launch-screen approach is a storyboard-free UILaunchScreen dictionary in Info.plist
  • CFBundleDisplayName (user-visible name) and the bundle identifier (a real, unique, reverse-DNS string) are foundational settings this entire course builds on