尝试使“菜单”图标适应莫哈韦暗模式

时间:2018-06-22 01:07:11

标签: icons macos-mojave

切换到莫哈韦沙漠后,我试图在模式更改时调整菜单图标。 我的应用程序:“应用程序是代理(UIElement)”最初没有Windows。

此刻,我正在使用NSMenuDelegate函数 menuWillOpen ,该函数到目前为止已经可以使用,但是用户必须打开菜单才能更改图标。

我想知道是否有一种方法可以在不打开菜单的情况下检测出外观是否发生了变化。我已经从NSApplicationDelegate尝试过applicationDidChangeScreenParameters,但没有成功。

//这来自NSMenuDelegate

- (void)menuWillOpen:(NSMenu *)menu { 
    [self adaptToDarkMode];
}

//这可以处理菜单图标的更改

 - (void) adaptMenuIcon {
    BOOL  darkModeFlag  = [self psGetDarkMode];
    NSString *iconName  = @"MenuIconBlack";

    if(darkModeFlag) {
        iconName  = @"MenuIconWhite";
    }

    NSString *filePath  = [self psBundlePathToFolder:@""];
    NSString *finalPath = [NSString stringWithFormat:@"%@%@.png", filePath, iconName];

    NSImage  *image     = [[NSImage alloc] initWithContentsOfFile:finalPath];
    pathToMenuIcons     = [self psBundlePathToFolder:@"MenuIcons"];

    [statusItem setMenu:statusMenu];
    [statusItem setTitle:@"➜"];
    [statusItem setImage: image];
    [statusItem setHighlightMode:YES];
}

The main Menu

1 个答案:

答案 0 :(得分:0)

您可以阅读全局首选项:

#grid.ui-jqgrid tr.jqgrow td {
    word-wrap: break-word; /* IE 5.5+ and CSS3 */
    white-space: pre-wrap; /* CSS3 */
    white-space: -moz-pre-wrap; /* Mozilla, since 1999 */
    white-space: -pre-wrap; /* Opera 4-6 */
    white-space: -o-pre-wrap; /* Opera 7 */
    overflow: hidden;
    height: auto;
    vertical-align: middle;
}

这将在黑暗模式下返回NSString *appearance = [[NSUserDefaults standardUserDefaults] stringForKey:@"AppleInterfaceStyle"];

您也可以使用Dark

NSDistributedNotificationCenter