NSPopover中的NSOutlineView在OSX 10.10 Yosemite中不可读

时间:2014-10-31 10:54:47

标签: objective-c macos cocoa nsoutlineview nspopover

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

enter image description here

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

enter image description here

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

有没有办法控制NSOutlineView中的文字颜色,这样无论背景颜色都保持不变?我已经尝试将文本单元格的颜色设置为黑色而不是系统颜色,但它没有帮助。

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

出于审美原因,我不想将NSOutlineView置于可靠的背景视图下。在这种情况下,弹出窗口背景和箭头之间会出现难看的颜色不匹配。

编辑:

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

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

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

EDIT2:

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

enter image description here

1 个答案:

答案 0 :(得分:1)

将模式设置为源列表以外的其他模式,您应该获得10.10之前的样式,即没有半透明效果。