我有一个NSPopover
包含NSOutlineView
(来源列表),它显示在通常很暗的背景上(但并不总是很暗)。 NSOutlineView
具有透明背景,可与NSPopover
视图完美融合。这在OS X 10.9中看起来很棒,但在10.10中,系统会根据背景更改NSOutlineView
中的文本颜色。结果是文本在某些情况下变得完全变灰并且不可读:
如果我将popover更改为HUD样式,则更具可读性:
然而,在这种情况下,背景较浅(顶部)会出现问题。
有没有办法控制NSOutlineView
中的文字颜色,这样无论背景颜色都保持不变?我已经尝试将文本单元格的颜色设置为黑色而不是系统颜色,但它没有帮助。
另外,我可以控制/删除NSPopover
的透明度吗?我已经读过NSPopover
使用NSVisualEffectView
,它有一些外观控件,但我不知道如何从NSPopover访问它。
出于审美原因,我不想将NSOutlineView
置于可靠的背景视图下。在这种情况下,弹出窗口背景和箭头之间会出现难看的颜色不匹配。
编辑:
我可以使用以下代码删除透明度:
NSView *popoverView = popover.contentViewController.view.superview;
popoverView.appearance = [NSAppearance appearanceNamed:NSAppearanceNameAqua];
它有效,但感觉就像一个丑陋的黑客。我欢迎更好的建议。
EDIT2:
这就是aqua风格的样子。没有透明度和黑色文字。
答案 0 :(得分:1)
将模式设置为源列表以外的其他模式,您应该获得10.10之前的样式,即没有半透明效果。