Компилировать с Xcode 11.5
MacOS и iOS поддерживают светлый и темный режимы. Поэтому важно сделать нашу тему адаптируемой к темному и светлому режимам. SwiftUI имеет встроенную поддержку темного и светлого режимов.
Настройка адаптивных цветов:
Для этого мы собираемся использовать набор цветов xcassets по следующим причинам:
- Набор цветов адаптируется к теме (светлый или темный), поэтому нет необходимости добавлять дополнительные варианты переключения в цветовом классе для переключения цветов по разным темам.
- Набор цветов помогает визуализировать цвета сразу же. Это упрощает соотнесение цветов с дизайном, предоставленным дизайнером.
- Набор цветов позволяет вводить цвета во всех форматах (например, RGB, 8-битный, шестнадцатеричный), поэтому нам не нужно устанавливать алгоритм преобразования. Xcode выполняет преобразование в плавающую точку.
Теперь мы адаптируем все эти цвета с расширением на Color, чтобы получить правильный интерфейс для использования этих цветов.
Карта в UIKit
Возможно, нам также понадобится использовать UIkit. Чтобы сопоставить эти цвета с UIColor. Добавьте метод преобразования, который преобразует класс Color в класс UIColor, или скопируйте вышеуказанные методы в расширение UIColor.
Матрица настроек:
Определите размер шрифта и отступы для класса. Мы также можем изменить шрифт и отступы с помощью UITraitCollection, но мы не будем делать этого здесь.
Настройка глобальной темы
- Перейдите к делегату сцены и установите accentColor в корневой ContentView. Теперь нам не нужно указывать Color simple button, Stepper, Date Piker и т. Д. Чтобы узнать больше об accentColor, нажмите this.
- Обновить внешний вид для представлений UIkit (некоторые представления SwiftUI используют представления UIkit внутри)
Установка шрифта и цветовой темы для текста
Мы создадим настраиваемый модификатор просмотра, чтобы обновить внешний вид текста и встроить его с расширением в метод просмотра.
Установка шрифта и цветовой темы для пользовательской кнопки
Мы повторим приведенное выше упражнение для Button.
Тематика тостов
Мы обновим базу фона тостов в соответствии с цветовой темой, которую мы добавили в пункте 1.
┼ Базовый код тоста взят из StackOverflow.
Использование:
Демо-проект