Темная тема в iOS

C выходом iOS 13 появилась возможность выбора оформления в системе - светлая и темная темы. В связи с этим изменением разрабатываемые приложения нужно адаптировать под оба эти оформления. Все цвета, которые создавались при помощи hex, colorLiteral, становятся не адаптированными под цветовые схемы. На данный момент существует несколько способов создания "динамического" цвета.
UIElementColor
Новым стандартом цветов для работы со стандартными объектами из UIKit стал UIElementColor, который доступен с iOS 13.
В данный стандарт входят цвета, поддерживающие выбор оформления. Например, для основного текста рекомендуют использовать цвет UIColor.label, для фона таблиц/коллекций/вьюшек рекомендуют использовать UIColor.systemBackground.
Данные цвета имеют белый цвет при темном оформлении и черный цвет при светлом оформлении.
Полный список объектов можно найти в документации.
Также Apple добавила адаптивную поддержку для системных цветов и добавила к ним префикс "system" (см. Рис. 1).
Рис. 1. Адаптированные цвета.
Dynamic Provider
Появился новый способ инициализировать UIColor при помощи dynamic provider.
При помощи данного инициализатора можно добавлять свои адаптированные цвета и использовать их в коде.
Color Asset
Также цвет можно создать, используя Color Set через Asset Catalog.
Рис. 2. Создание Color Set
После создания цвета во вкладке Appearance нужно выбрать "Any, Dark" или "Any, Dark, Light".
Рис. 3. Изменение appearance.
После появляется два или три блока, для каждого из которых выбираем свой цвет (см. Рис. 4). Далее используем этот цвет в InterfaceBuilder путем выбора цвета из списка или добавляем расширение над UIColor.
Рис. 4. Готовый цвет.
Спасибо за внимание!