判断OS X是否为深灰色菜单栏(status bar)和Dock


今天在改一个项目时候,需要适配在OS X 10.10以上的系统中新加入的深灰色菜单栏和Dock这一变化, 需要判断系统是否处于Dark模式下,但是在一般情况下,应该使用模板图像,因为它们允许用户界面自动适应系统所做的更改(至少当系统中没有错误时… 参考: Yosemite’s Dark Mode)。但状态栏中使用自定义视图的情况下,不能利用模板图像,所以我需要手动检查暗模式,并相应地调整调用的图片。
检查Dark模式的代码如下:

NSDictionary *dict = [[NSUserDefaults standardUserDefaults] persistentDomainForName:NSGlobalDomain];
id style = [dict objectForKey:@"AppleInterfaceStyle"];
BOOL darkModeOn = ( style && [style isKindOfClass:[NSString class]] && NSOrderedSame == [style caseInsensitiveCompare:@"dark"]);

这样,通过darkModelOn的值就可以知道是否开启了Dark模式。

当然我们还可以设置一个通知,动态的来改变我们需要调用的图片。通知如下所示:

[[NSDistributedNotificationCenter defaultCenter] addObserver:self selector:@selector(darkModeChanged:) name:@"AppleInterfaceThemeChangedNotification" object:nil];

然后就可以执行需要调用的逻辑了,如下:

-(void)darkModeChanged:(NSNotification *)notif {
    NSLog(@"Dark mode changed");
}

参考资料:
http://stackoverflow.com/questions/25379525/how-to-detect-dark-mode-in-yosemite-to-change-the-status-bar-menu-icon

你可能感兴趣的:(判断OS X是否为深灰色菜单栏(status bar)和Dock)