在优胜美地中启用黑暗模式时,必须更改状态栏应用程序图标。
如何检测是否启用了暗模式?是否有相同的通知?

显示其他图像或更改现有Image的Alpha值是否更好?
需要输入哪个是更好的方法?

最佳答案

您应该尽可能使用模板图像,因为它们可以使您的UI自动适应系统所做的更改(至少在系统中没有bug的情况下……http://indiestack.com/2014/10/yosemites-dark-mode/)。但是,如果您可能在状态栏中使用自定义 View 而无法利用模板图像,则可以手动检查暗模式并相应地调整UI。

您可以通过从用户的全局首选项中检索密钥来检查是否启用了暗模式,如下所示:

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

至少对于Yosemite的第一个发行版,在禁用暗模式时该键不存在,但是在启用暗模式时该键存在并且返回字符串值@“暗”。我添加了不区分大小写的比较,因为我已经看到偏好键在系统版本之间更改了它们的大小写,并且为此增加了一点保障。

要监视设置的当前状态,您可以注册为分布式通知的观察者(在适当的方法内),如下所示:
[[NSDistributedNotificationCenter defaultCenter] addObserver:self selector:@selector(darkModeChanged:) name:@"AppleInterfaceThemeChangedNotification" object:nil];

然后创建一个方法来充当通知的消息选择器,如下所示:
-(void)darkModeChanged:(NSNotification *)notif
{
    NSLog(@"Dark mode changed");
}

关于osx-yosemite - 如何在优胜美地中检测黑暗模式以更改状态栏菜单图标,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25379525/

10-09 05:11