我有一个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:
这就是水色风格的样子。没有透明度和黑色文本。