Как заставить WebView (или WKWebView) на OSX принять Dark Mode в Мохаве - PullRequest
0 голосов
/ 28 августа 2018

У меня есть встроенный WebView в моем приложении Mac. Я использую его для отображения текста HTML (сгенерированного из Markdown.)

Я пытаюсь заставить его использовать темный режим в Мохаве (аналогично тому, как NSTextView работает «из коробки»).

Возможно ли это - или мне нужно вручную вставить некоторые элементы CSS в HTML, чтобы специально установить цвета?

Предполагая, что это последнее - кто-нибудь знает, как сделать это в общем виде (то есть получить CSS, чтобы определить, должен ли он быть темным или светлым, основываясь на клиентском браузере.)

Заранее спасибо ...

1 Ответ

0 голосов
/ 17 октября 2018

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

При этом WKWebView показывает «контент», и «контент» не должен изменяться Системой, «контент» должен отображаться в своих собственных цветах. Если вы показываете веб-сайт, система не должна менять цвета.

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

Обнаружить изменение можно путем переопределения метода viewDidChangeEffectiveAppearance.

- (void)    viewDidChangeEffectiveAppearance
{
    [super viewDidChangeEffectiveAppearance] ;
    NSLog(@"New appearance is %@",[self effectiveAppearance].name) ;
}

На основе имени внешнего вида (NSAppearanceNameVibrantDark или NSAppearanceNameVibrantLight) вы можете загрузить CSS или другой.

...