macOS Mojave 判断 DarkMode

  • OC 写法如下
//  判断的方式
NSDictionary *dict = [[NSUserDefaults standardUserDefaults] persistentDomainForName:NSGlobalDomain];
id style = [dict objectForKey:@"AppleInterfaceStyle"];
BOOL isDarkMode = ( style && [style isKindOfClass:[NSString class]] && NSOrderedSame == [style caseInsensitiveCompare:@"dark"] );
if (isDarkMode) {
    NSLog(@"黑夜模式");
} else {
    NSLog(@"正常模式");
}

// 动态监听 Mode 的修改
NSString * const darkModeNotificationName = @"AppleInterfaceThemeChangedNotification";
[[NSDistributedNotificationCenter defaultCenter] addObserver:self selector:@selector(updateDarkMode) name:darkModeNotificationName object:nil];
 
// 监听的修改方法
- (void)updateDarkMode { 
  NSDictionary *dict = [[NSUserDefaults standardUserDefaults] persistentDomainForName:NSGlobalDomain];
id style = [dict objectForKey:@"AppleInterfaceStyle"];
BOOL isDarkMode = ( style && [style isKindOfClass:[NSString class]] && NSOrderedSame == [style caseInsensitiveCompare:@"dark"] );
if (isDarkMode) {
    NSLog(@"黑夜模式");
} else {
    NSLog(@"正常模式");
}
}
  • Swift 写法如下
//  判断的方式 监听方式如上使用 swift 的方式即可
  let dict = UserDefaults.standard.persistentDomain(forName: UserDefaults.globalDomain) ?? nil
        
        guard let dicts: Dictionary = dict else {
            print("不是字典类型")
            return
        }
        
        guard let style = dicts["AppleInterfaceStyle"] as? String else {
            print("style is not string")
            return
        }
        
        let isDarkMode : Bool = style.compare("Dark").rawValue == 0
        
        if isDarkMode {
            print("暗黑模式\(style)")
        } else {
            print("正常模式\(style)")
        }
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容