NEW: Learn SwiftUI with my free YouTube video series! >>

< SwiftUI vs Interface Builder and storyboards   How to follow this quick start guide >

Frequently asked questions about SwiftUI

Lots of people are already asking me questions about SwiftUI, and I’ve done my best to ask other people who know much more to try to find definitive answers as appropriate.

So, here goes…

Which to learn: SwiftUI or UIKit?

Right now the overwhelming majority of iOS apps are written using UIKit. Some aren’t because they use React Native or something else, but they are effectively a rounding error - as far as we’re concerned, UIKit and iOS apps go hand in hand.

So, if you ignored SwiftUI for a year, two years, or perhaps even more, there would be no shortage of jobs for you. No one – not even Apple, I think! – expects the iOS community to migrate over to SwiftUI at any sort of rapid pace. There’s a lot of code, a lot of time, and a lot of money invested in UIKit apps, and it has a long and happy life ahead of it.

On the other hand, if you were fresh to iOS development and ignored UIKit so you could focus on SwiftUI, chances are you’ll have a very hard time finding a job because no one uses it commercially. Heck, as I write this it was only 36 hours ago the thing was actually announced!

Where can SwiftUI be used?

SwiftUI runs on iOS 13, macOS 10.15, tvOS 13, and watchOS 6, or any future later versions of those platforms. This means if you work on an app that must support iOS N-1 or even N-2 – i.e., the current version and one or two before that – then it will be a year or two before you can even think of moving to SwiftUI.

However, it’s important you don’t think of SwiftUI as being a multi-platform framework similar to Java’s Swing or React Native. The official line seems to be that SwiftUI is not a multi-platform framework, but is instead a framework for creating apps on multiple platforms.

That might sound the same, but there’s an important difference: Apple isn’t saying that you can use identical SwiftUI code on every platform, because some things just aren’t possible – there’s no way to use the Apple Watch’s digital crown on a Mac, for example, and similarly having a tab bar on a watchOS app just wouldn’t work.

Does SwiftUI replace UIKit?

No. Many parts of SwiftUI directly build on top of existing UIKit components, such as UITableView. Of course, many other parts don’t – they are new controls rendered by SwiftUI and not UIKit.

But the point isn’t to what extent UIKit is involved. Instead, the point is that we don’t care. SwiftUI more or less completely masks UIKit’s behavior, so if you write your app for SwiftUI and Apple replaces UIKit with a singing elephant in two years you don’t have to care – as long as Apple makes the elephant compatible with the same methods and properties that UIKit exposed to SwiftUI, your code doesn’t change.

Does SwiftUI use Auto Layout?

While Auto Layout is certainly being used for some things behind the scenes, it’s not exposed to us as SwiftUI designers. Instead, it uses a flexible box layout system that will be familiar to developers coming from the web.

Is SwiftUI fast?

SwiftUI is screamingly fast – in all my tests so far it seems to outpace UIKit. Having spoken to the team who made it I’m starting to get an idea why: first, they aggressively flatten their layer hierarchy so the system has to do less drawing, but second many operations bypass Core Animation entirely and go straight to Metal for extra speed.

So, yes: SwiftUI is incredibly fast, and all without us having to do any extra work.

Why can’t I see the preview of my code?

When working with SwiftUI it’s helpful to be able to see both the code for your view and a preview of your view – how it looks – side by side. If you can see the code and not the preview, chances are you have yet to upgrade to macOS 10.15; it’s required to make the preview work.

How closely does the code match the preview?

When you make any change to the preview it will also update the generated code. Similarly, if you change the code it will update the user interface too. So, the code and preview are identical and always stay in sync.

Why do my colors look slightly off?

SwiftUI gives us standard system colors like red, blue, and green, but these aren’t the pure red, blue, and green you might be used to from UIColor. Instead, these are the new style colors that automatically adapt to light and dark mode, which means they will look brighter or darker depending on your system appearance.

Is UIKit dead?

No! Apple has a massive stack of new UIKit functionality airing at this week’s WWDC. If Apple are still doing WWDC talks about new features in UIKit, you’re quite safe – there’s no risk of them retiring it by surprise.

Can you mix views from SwiftUI and UIKit?

Yes! You can embed one inside the other and it works great.

LEARN SWIFTUI FOR FREE I wrote a massive, free SwiftUI tutorial collection, and also have a growing list of free SwiftUI tutorials on YouTube – get started today!

< SwiftUI vs Interface Builder and storyboards   How to follow this quick start guide >
MASTER SWIFT NOW
Buy Testing Swift Buy Practical iOS 12 Buy Pro Swift Buy Swift Design Patterns Buy Swift Coding Challenges Buy Server-Side Swift (Vapor Edition) Buy Server-Side Swift (Kitura Edition) Buy Hacking with macOS Buy Advanced iOS Volume One Buy Advanced iOS Volume Two Buy Hacking with watchOS Buy Hacking with tvOS Buy Hacking with Swift Buy Dive Into SpriteKit Buy Swift in Sixty Seconds Buy Objective-C for Swift Developers Buy Beyond Code

Was this page useful? Let me know!

Average rating: 4.7/5

Click here to visit the Hacking with Swift store >>