In iOS 13, Apple introduced a bunch of new system colors (label, systemBackground, etc). These colors dynamically adapt to the preferred user interface style, but these colors aren't available on iOS < 13. ColorCompatibility is an autogenerated library which allows you to specify the system colors as static vars of the ColorCompatibility namespace, instead of UIColor. Using this will make colors "just work" on both iOS 13+ and iOS <= 12. On iOS <= 12, the colors default to Apple's light mode colors.
Please note: there are some system colors (like systemGray
, systemBlue
etc) which have been available before iOS 13. This library does not currently provide fallbacks for these colors - you can use UIColor
to access them. Feel free to submit an issue if you have a use case for including these colors in this library's enum!
E.g.:
import ColorCompatibility
myView.backgroundColor = ColorCompatibility.label
You can read more about this project here.
To run the example project, clone the repo, and run pod install
from the Example directory first.
ColorCompatibility is available through CocoaPods. To install it, simply add the following line to your Podfile:
pod 'ColorCompatibility'
ColorCompatability is available as a Swift package. To install, add https://github.com/noahsark769/ColorCompatibility.git
as a package dependency in Xcode for a version >= 1.0.1, or as a dependency of another package:
let package = Package(
dependencies: [
.package(url: "https://github.com/noahsark769/ColorCompatibility.git", ...)
]
)
If you'd prefer not to use Cocoapods or SPM, I recommend copy and pasting the ColorCompatibility.swift
code directly into your project. It's only one file 👍
When dropping in UIColor
in place of ColorCompatibility
when your app drops support for iOS 12, it's not strictly guaranteed that all colors behave the same way: for example, in iOS 13, system colors adapt to display differently when they're in an "elevated" context, like the background color of a view controller presented modally. For more information on elevated colors, see the Human Interface Guidelines on Dark Mode.
Noah Gilmore, https://noahgilmore.com/blog
ColorCompatibility is available under the MIT license. See the LICENSE file for more info.
If you see an issue, please report it via the GitHub issues tab. Pull requests are gladly accepted. You can get in touch with me on Twitter at https://twitter.com/noahsark769. Please don't submit PRs which update the library to include colors which have been available before iOS 13 (systemGray
, systemBlue
etc) without first discussing your use case in an issue.
If I don't respond to your issue or PR, feel free to tag me @noahsark769 or mention me on Twitter!