判断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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容