1

私は次のCFPreferencesように設定するアプリを構築しようとしています:

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

次に、通知を投稿して、変更されたことをシステムに知らせます。

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

これを通常の Mac アプリで試してみましたが、動作しませんでしたが、prefPane に配置すると動作します。誰にも指針がありますか?

これは Yosemite に固有のもので、テーマをライトに設定します (メニュー バーとドックを変更します)。

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 に答える