美文网首页
macOS Mojave 判断 DarkMode

macOS Mojave 判断 DarkMode

作者: 游城十代2dai | 来源:发表于2018-12-10 11:46 被阅读28次
  • 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)")
        }

相关文章

网友评论

      本文标题:macOS Mojave 判断 DarkMode

      本文链接:https://www.haomeiwen.com/subject/lbdrhqtx.html