Как обрабатывать пользовательские цвета для Dark Mode в Swift - PullRequest
2 голосов
/ 21 октября 2019

Вот как я сейчас работаю с UI Element Colors для Dark Mode с отступлением для старых операционных систем.

extension UIColor {
    class var mySystemBackground: UIColor {
        if #available(iOS 13, *) {
            return .systemBackground
        } else {
            return .white
        }
    }
}

В этом случае systemBackground знает, когда он находится в Dark Mode, а когда - вLight Mode и меняется соответственно. Я хотел бы сделать что-то похожее, используя пользовательские цвета.

Например, у меня есть собственный желтый цвет, который я сейчас использую в своем приложении, и я хотел бы предоставить другой цвет для использования в темном режиме.

Вот код, о котором я думаю ...

extension UIColor{
    class var mySystemYellowColor: UIColor {
        // default light-color 
        var myYellow = UIColor(red: 254/255, green: 219/255, blue: 2/255, alpha: 1.0) /* #fedb02 */

        if #available(iOS 13.0, *) {  

            if traitCollection.userInterfaceStyle == .light {
                return myYellow
            } else {
                // color for dark mode in iOS 13.0
                myYellow = UIColor(red: 242/255, green: 125/255, blue: 0/255, alpha: 1.0) /* #f27d00 */
            }
            return myYellow

        } else {
            return myYellow
        }
    }
}

Это доступный способ обработки пользовательских цветов для Dark Mode в iOS13 с откатом для других операционных систем?

Ответы [ 2 ]

6 голосов
/ 21 октября 2019

Создание цветов в каталоге активов.

Цвета в каталоге активов могут создаваться для различных Внешний вид и доступны с помощью UIColor(named:) API

См. Поддержка темного режима в вашем интерфейсе

2 голосов
/ 21 октября 2019

Да, это использование цветовых активов, и оно имеет внешний вид, установленный Любой, Темный

И затем используйте имя актива и UIColor (с именем: "AssetName"), не нужно проверять версию или проверять стиль интерфейса

...