По умолчанию представление прародителя NSPredicateEditor должно быть NSScrollView:
Если вы предоставите этому виду прокрутки прозрачный фон clearColor, основная проблема в Dark Mode будет по большей части устранена. Если вы оставите это альфа-изменение активным в легком режиме, редактор предикатов примет белый фон, а не серый вид фона по умолчанию.
Как Apple говорит , внесите это изменение в layout()
или в один из других методов, которые дают вашему представлению возможность обновить себя при изменении внешнего вида системы.
class NSPredicateEditorDarkModeFix: NSPredicateEditor {
override func layout() {
defer { super.layout() }
guard let clipView = self.superview as? NSClipView, let scrollView = clipView.superview as? NSScrollView else {
return
}
let alpha: CGFloat = NSAppearance.current.name == .darkAqua ? 0.0 : 1.0
scrollView.backgroundColor = scrollView.backgroundColor.withAlphaComponent(alpha)
}
}
Темный режим NSPredicateEditor по-прежнему имеет некоторые проблемы с пользовательским интерфейсом, а именно рамку серого фона каждого элемента управления.
Это исправление обсуждалось на подкасте Omni Show здесь:
https://theomnishow.omnigroup.com/episode/rey-worthington-omnigraffle-engineer
https://twitter.com/theomnishow/status/1052630270719868928