【问题标题】:NSPopover color invert in Yosemite dark color优胜美地深色中的 NSPopover 颜色反转
【发布时间】:2014-11-26 16:36:29
【问题描述】:

我正在使用NSPopover,当我将系统停靠颜色更改为深色(优胜美地新功能)时,我的视图中的某些元素会反转它们的颜色。

例如,一些标签从黑色变为灰色,或者文本字段背景从白色变为黑色。如果我有一个白色背景的视图,它现在会变成模糊的黑暗效果。

那么两个问题:

  1. 我可以取消此行为并强制 UI 像在常规模式下一样工作吗?

  2. 这里有什么规则可以让哪个元素反转颜色吗?

因为似乎有些元素发生了变化,有些则没有。

这是我在优胜美地常规模式下的应用:

这是在优胜美地黑暗模式下:

【问题讨论】:

    标签: objective-c macos osx-yosemite nspopover


    【解决方案1】:

    可能是您正在使用的库导致此行为。我刚刚在一个新项目上进行了测试,无论我多么努力,我都无法让 NSPopover 变黑。

    您使用什么库?您是如何设置 NSPopover 的?

    也许您可以尝试更改视图的外观属性?

    view.appearance = [NSAppearance appearanceNamed:NSAppearanceNameAqua];

    NSView 具有属性appearance,因为它符合NSAppearanceCustomization

    另见NSAppearance

    ————————————————————————

    找到解决方案:

    self.popover.appearance = [NSAppearance appearanceNamed:NSAppearanceNameAqua];
    

    结果:

    【讨论】:

    • 我添加了一张照片,可以看到,元素背景变黑了。
    • 我在未选择 Yosemite 深色模式的情况下添加了我的应用的另一张图片
    • 这种方法的缺点是,即使系统外观设置为暗模式,弹出框总是看起来很亮。似乎没有办法让弹出框匹配系统外观(亮或暗),并且没有那种愚蠢的透明度。
    • 问题是关于强制 UI 使用特定颜色。仅仅因为这个答案与您完全不同的问题(匹配系统颜色)无关,这并不意味着它有“缺点”。也就是说,要匹配系统颜色,请观察AppleInterfaceThemeChangedNotification 分发的通知,使用NSAppearance.current().name 确定系统是否设置为亮/暗,并进行相应更改。摆脱透明度(再次,不同的问题)stackoverflow.com/questions/19978620/…
    【解决方案2】:

    有很多方法可以做到这一点,但我建议接受它。 它没有具体记录什么会改变以及如何改变。 但是观察会告诉你该怎么做。 首先,它要求你做与选择相反的事情。 选择加入是使用 Appkit 界面元素,以及使用作为系统颜色提供的 NSColor 名称和使用 NSVisualEffectView。 这意味着要明确选择退出,您需要四处走动并基本上自定义视图,这主要意味着设置明确的颜色并偶尔进行子类化。 开箱即用的 HUD 样式弹出框和面板将选择加入。

    【讨论】:

    • 弹出框的自定义可能会受到限制。如果用户在 Accessibilty 首选项中打开“降低透明度”,您也会看到差异。
    • 这种行为(颜色反转)何时发生?进入暗模式时,任何窗口中的某些 UI 元素都会发生这种情况吗?还是仅在弹出窗口中时?
    • 深色模式。您可以观察到 NSNotification 和可访问性更改。新的可能只会在 AppKit 10.10 的发行说明或标题中注明。我忘记了哪个标题。
    • 从技术上讲,当窗口更改为主或键状态或应用程序变为/退出活动状态时,也会发生颜色变化。只需切换应用程序,您就会注意到这些事情发生了。总的组合意味着您可能需要多种颜色用于各种状态(深色 + 活动、深色 + 非活动等)。状态没有直接记录,AppKit 用来改变视图的 ivars 是私有的。所以你需要自己设置。一旦你这样做了几次,你就会开始考虑你自己的框架;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多