Chapter 12. Theming and Sharing Selfiegram

As it currently stands our app is in pretty good shape from a functionality perspective. Everything works properly and the interface of the app is solid—it is, however, a bit dull looking. While the default UIKit elements work very well and provide a consistent appearance with the Apple-provided apps, they aren’t what we are after. We want our app to stand out.

There are loads of different ways we can go about this, but we are going to use themes to customize the appearance of our app. Themes allow us to design a universal appearance we want shared by each and every view in Selfiegram and have this automatically applied across the app. Our theme will be defined using the UIAppearance class. This class has a variety of different methods that let us dive into the guts of a view and set its appearance according to how we want it to look. Once this is done this theme will be applied to the entire view hierarchy, giving us a consistent interface for the whole app. As an added bonus, if we ever want to update the theming of our app all we need to do is modify the theme code and it will propagate out to the entire app at once, saving oodles of time.


The UIAppearance class is a proxy object that exists on most view subclasses. It’s designed to work on a class and not an instance, but we interface with it in the same fashion as if it were an instance. This means we won’t be telling specific items in our interface, such as a particular ...

Get Learning Swift, 3rd Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.