我试图让我的NSScrollView (因此是一个包含的NSOutlineView)使用一个模糊的NSVisualEffectView窗口后混合效果。
我已经成功地使NSVisualEffectView成为容器视图,并将滚动视图作为子视图放置。这似乎很好(只要我使我的所有表格单元格、表、nsscrollview等透明)。
然而,我现在已经在可访问性选项下启用了“降低透明度”,突然之间,我的NSScrollView背后就有了一个黑色的背景。为了覆盖drawRect方法,我尝试对视觉效果视图进行子类化,以便绘制自己的背景,但我刚刚了解到这是不可能的,也是不建议的。
如何检测减少透明度,以及如何动态地使滚动视图不透明?
发布于 2015-05-13 09:36:59
我花了一段时间才找到它,但是在NSWorkspace上有几种新的方法,您可以使用这些方法来了解OS新的可访问性特性的首选项。-[NSWorkspace accessibilityDisplayShouldReduceTransparency]是你想要的。
通过侦听NSWorkspaceAccessibilityDisplayOptionsDidChangeNotification,您可以了解该偏好何时发生变化。请注意,您必须在正确的NSNotificationCenter,即[[NSWorkspace sharedWorkspace] notificationCenter]上注册该通知。
发布于 2014-11-29 21:38:30
现在看来,我已经重写了包含所有内容并为此设置背景色的父NSView。这样,当“降低透明度”打开时,NSVisualEffectView就会变得透明,而我最终得到的颜色就是它下方可见的颜色。现在看来还不错。
https://stackoverflow.com/questions/27203272
复制相似问题