4

我有一个NSPopover包含一个NSOutlineView源列表),它显示在通常是黑暗的背景上(但它并不总是黑暗的)。它NSOutlineView有一个透明的背景,可以很好地与NSPopover视图融为一体。这在 OS X 10.9 中看起来很棒,但在 10.10 中,系统会NSOutlineView根据背景更改文本颜色。结果是文本在某些情况下变得完全灰色且不可读:

在此处输入图像描述

如果我将弹出框更改为 HUD 样式,则更具可读性:

在此处输入图像描述

但是,在这种情况下,较浅的背景(顶部)会出现问题。

有什么方法可以控制文本颜色,NSOutlineView以便无论背景如何颜色都保持不变?我尝试将文本单元格的颜色设置为黑色而不是系统颜色,但它没有帮助。

另外,我可以控制/删除透明度NSPopover吗?我读过NSPopover使用NSVisualEffectView,它有一些外观控件,但我不知道如何从 NSPopover 访问它。

出于美学原因,我不想将其NSOutlineView置于坚实的背景视图之下。在这种情况下,弹出框背景与其箭头之间的颜色会出现难看的不匹配。

编辑:

我能够使用以下代码删除透明度:

NSView *popoverView = popover.contentViewController.view.superview;
popoverView.appearance = [NSAppearance appearanceNamed:NSAppearanceNameAqua];

它有效,但感觉就像一个丑陋的黑客。我欢迎更好的建议。

编辑2:

这就是水色风格的样子。没有透明度和黑色文本。

在此处输入图像描述

4

1 回答 1

1

将模式设置为与源列表不同的模式,您应该获得 10.10 之前的样式,即没有半透明。

于 2014-11-12T09:26:12.037 回答