В моем веб-представлении я использую переменные CSS для изменения различных цветов во время выполнения в зависимости от того, включен ли темный режим в MacOS 10.14.Это очень хорошо работает.Сложная задача - обновлять цвета при изменении внешнего вида системы.
Я обнаруживаю изменение, наблюдая за свойством effectiveAppearance
в окне.Это уведомление приходит, как и ожидалось, но когда я обновляю цвета, NSColor
по-прежнему дает мне темные цвета (или режим, в котором приложение запускалось).Например, NSColor.textColor
по-прежнему белый, а не черный, когда я реагирую на переключение из темного режима в светлый.Похоже, то же самое происходит с моими собственными цветовыми активами.
Есть ли другой способ или время, когда я должен получить эти цвета?Или это может быть ошибка ОС?
Редактировать: Я также попытался создать подкласс WebView
и обновить мои цвета в drawRect()
, если имя эффективного внешнего вида веб-представления изменяется,В первый раз я получаю все светлые цвета, даже когда приложение запускается в темном режиме.После этого, когда я переключаюсь из светлого режима в темный, я получаю темные версии системных цветов и светлые версии цветов каталога ресурсов.
За пределами отладчика переключение в темный режим работает, но первоначальная загрузка всегда получаетсветлые цвета.