DB5-Swift ported by Scott Williams
Now up to date with Xcode 6.3 and Swift 1.2.
By storing colors, fonts, numbers, booleans, and so on in a plist, we were able to iterate quickly on our app Vesper.
Our designers could easily make changes without having to dive into the code or ask engineering to spend time nudging pixels and changing values.
There is nothing magical about the code or the system: it’s some simple code plus a few conventions.
See the demo app. You include two classes — ThemeLoader
and Theme
— and DB5.plist. The plist is where you set values.
At startup you load the file via ThemeLoader
, then access values via methods in Theme
.
Most of the methods are straightforward. Theme.boolForKey()
returns a Bool, and so on.
Some of the methods require multiple values in the plist file. For instance, Theme.fontForKey()
expects the font name as keyName
and the size as keyNameSize
. See Theme.swift for more information about these multiple-key values.
Though we haven’t used this capability in Vesper, we made it so that you can have multiple themes. Every theme inherits from the Default theme.
If you ask for a value from a theme other than Default, and that value is not specified in that theme, it falls back to Default to get that value.
The demo app is straightforward and small. AppDelegate
loads the themes. ViewController
shows some example use.
Also, see the Examples folder for the DB5.plist from Vesper.
- Prefixes were removed.
- Some unit tests were added in the
Tests
folder. - A different constructor was created in
ThemeLoader
to allow you to use a different plist file.
DB5 — Brent Simmons
@brentsimmons
DB5-Swift — Scott Williams
@swilliams
DB5-Swift is available under the MIT license. See the LICENSE file for details.