macOS's dark mode (暗黑模式)

苹果在 macOS 10.14 中为我们带来了 dark mode (暗黑模式) 功能

可以在 系统偏好设置通用 面板中开启暗黑模式

判断当前主题是否为暗黑模式

- (BOOL)isDarkMode {
    if (@available(macOS 10.14, *)) {
        NSDictionary *dict = [[NSUserDefaults standardUserDefaults] persistentDomainForName:NSGlobalDomain];
        BOOL isDarkMode = [[dict objectForKey:@"AppleInterfaceStyle"] isEqualToString:@"Dark"];
        return isDarkMode;
    }
    return NO;
}

监听主题变化

可以通过注册 AppleInterfaceThemeChangedNotification 这个通知事件来获知主题的变更

[NSDistributedNotificationCenter.defaultCenter addObserver:self selector:nil name:@"AppleInterfaceThemeChangedNotification" object: nil];

为应用选择一种固定主题

系统默认已经为 NSView 自动适配了暗黑模式

我们可以为单个视图、整个应用指定固定的主题模式,而不跟随系统的主题变化。

  • 单个视图

  • 为整个应用指定一个主题

-applicationDidFinishLaunching: 方法中设置

// 默认主题
[NSApp setAppearance:[NSAppearance appearanceNamed:NSAppearanceNameAqua]];
// 暗黑模式
[NSApp setAppearance:[NSAppearance appearanceNamed:NSAppearanceNameDarkAqua]];

参考