我正在尝试构建一个像这样设置CFPreferences
的应用程序:
CFPreferencesSetValue((CFStringRef)@"AppleInterfaceStyle", NULL, kCFPreferencesAnyApplication, kCFPreferencesCurrentUser, kCFPreferencesCurrentHost);
然后发布通知让系统知道它已被更改。
CFNotificationCenterPostNotification(CFNotificationCenterGetDistributedCenter(), (CFStringRef)@"AppleInterfaceThemeChangedNotification", NULL, NULL, YES);
[defaults setObject:@"light" forKey:@"interfaceStyle"];
我在普通的Mac应用程序中尝试了这个并且它不起作用,但是如果我把它放在prefPane中它就可以了。有没有人有任何指示?
这是Yosemite特有的,并将主题设置为浅色(更改菜单栏和停靠栏)。
答案 0 :(得分:0)
将通知代码包装在dispatch_async中为我工作。不知道为什么会这样。
dispatch_async(dispatch_get_main_queue(), ^{
CFNotificationCenterPostNotification(CFNotificationCenterGetDistributedCenter(), (CFStringRef)@"AppleInterfaceThemeChangedNotification", NULL, NULL, YES);
});