1

我正在尝试构建一个设置CFPreferences如下的应用程序:

CFPreferencesSetValue((CFStringRef)@"AppleInterfaceStyle", NULL, kCFPreferencesAnyApplication, kCFPreferencesCurrentUser, kCFPreferencesCurrentHost);

然后发布通知让系统知道它已被更改。

CFNotificationCenterPostNotification(CFNotificationCenterGetDistributedCenter(), (CFStringRef)@"AppleInterfaceThemeChangedNotification", NULL, NULL, YES);
    [defaults setObject:@"light" forKey:@"interfaceStyle"];

我已经在普通的 Mac 应用程序中尝试过,但它不起作用,但如果我把它放在 prefPane 中它就可以了。有没有人有任何指示?

这是特定于优胜美地的,并将主题设置为浅色(更改菜单栏和停靠栏)。

4

1 回答 1

0

将通知代码包装在 dispatch_async 中对我有用。不知道为什么。

dispatch_async(dispatch_get_main_queue(), ^{
    CFNotificationCenterPostNotification(CFNotificationCenterGetDistributedCenteR(), 
   (CFStringRef)@"AppleInterfaceThemeChangedNotification", NULL, NULL, YES);
});
于 2014-10-12T17:06:43.483 回答