6

我试图让我的NSScrollView(因此是包含的NSOutlineView)使用模糊NSVisualEffectView的窗后混合效果。

我已经成功地制作NSVisualEffectView了容器视图并将我的滚动视图放置为子视图。这似乎工作正常(只要我使所有表格单元格、表格、nsscrollview 等透明)。

但是,我现在在辅助功能选项下打开了“降低透明度”,突然之间,我的NSScrollView. 我尝试子类化视觉效果视图以覆盖该drawRect方法,以便我可以绘制自己的背景,但我刚刚了解到这是不可能的或不推荐的。

如何检测到“降低透明度”已打开以及如何使我的滚动视图动态不透明?

4

2 回答 2

6

我花了一些时间才找到它,但是在 NSWorkspace 上有一些新方法,您可以使用它们来了解 OS X Yosemite 的新辅助功能的偏好。-[NSWorkspace accessibilityDisplayShouldReduceTransparency]是你想要的那个。

通过聆听,NSWorkspaceAccessibilityDisplayOptionsDidChangeNotification您可以了解该偏好何时发生变化。请注意,您必须在正确的 上注册该通知NSNotificationCenter,即[[NSWorkspace sharedWorkspace] notificationCenter]

于 2015-05-13T09:36:59.143 回答
1

现在看来,我最终覆盖了一个NSView包含所有内容的父级并为此设置了背景颜色。这样,当减少透明度打开时,NSVisualEffectView变成透明的,我最终得到的颜色是它下面可见的颜色。目前这似乎工作正常。

于 2014-11-29T21:38:30.543 回答