Поскольку решение vadian, к сожалению, не работает для меня, я хотел бы показать здесь свое альтернативное решение. Может быть, это поможет кому-то еще.
Создайте NSStatusItem
и настройте NSStatusBarButton
:
...
if let button = statusBarItem.button {
...
button.appearance = NSAppearance.current // removes the pale effect
}
...
Напишите расширение для Notification.Name
, чтобы реагировать на AppleInterfaceThemeChangedNotification
:
extension Notification.Name {
static let AppleInterfaceThemeChangedNotification = Notification.Name("AppleInterfaceThemeChangedNotification")
}
Добавьте наблюдателя к новому имени уведомления:
DistributedNotificationCenter.default.addObserver(self, selector: #selector(interfaceChanged), name: .AppleInterfaceThemeChangedNotification, object: nil)
Ответьте на изменение между светлым / темным режимом:
@objc private static func interfaceChanged() {
// change button.appearance
}
Убедитесь, что button.appearance
только изменено, если доступна необходимая версия macOS:
guard #available(OSX 10.14, *) else {
return
}
Я уверен, что есть более чистое решение. Если у кого-то есть идея, пожалуйста, скажите мне.