与问题标题一样,NSAppearance
,NSEffectView.Material
和“活力”之间的关系是什么?我通过实验发现,对于某些材料,NSAppearance
的选择可以改变材质的显示方式(例如,NSEffectView.Material.titlebar
将根据活动NSAppearance
而变亮或变暗),同时其他材料(例如.light
)似乎并不关心。
我怀疑像.titlebar
这样的材料是从.dark
,.ultradark
,.light
和.mediumLight
中选择的代理,具体取决于NSAppearance
,但那似乎是.appearanceBased
的作用。我在NSAppearance.Name.vibrantLight
...
只应在NSVisualEffectView或其子视图之一上设置。
......这有点与NSEffectView
文档中的陈述相矛盾......
视图的有效外观必须允许活力......在大多数情况下,您在窗口或视觉效果视图上设置外观 - 子视图然后继承外观。
...建议将vibrantLight
设置为整个窗口的NSAppearance
可能是正确的(如果这是您想要的外观)。
最后,我对“振动”究竟是什么感到困惑;如果有人能够解释,那就太好了。
答案 0 :(得分:3)
因此,NSAppearance通常描述了针对外观设置的视图层次结构的控件,颜色等的样式。
NSVisualEffectView提供了一种实现两种效果的方法:半透明和活力。前者更明显,有半透明的侧边栏或标题栏。 documentation对活力的描述非常好:
Vibrancy与半透明有关。它描述了一种合成模式,它可以进行特殊混合,例如Plus Lighter,Plus Darker,Color Dodge或Color Burn。
基本上描述视觉效果视图中的内容(文本,图像等)如何与半透明度合成。
那么这些如何相关?
材质描述了半透明效果的外观。正如你所指出的,有些人受到NSAppearance的影响,有些则没有。那些在语义上描述它们的用法,以便自定义UI可以类似于该效果而不管外观(.appearanceBased
,.titlebar
,.menu
,.popover
,.sidebar
, .selection
)而其他人则允许对结果半透明度进行特定控制(.light
,.dark
,.mediumLight
,.ultraDark
),但应与其相关联使用NSAppearance使视觉效果视图中的内容可以匹配半透明效果。除非您需要对材质进行特定控制,否则使用外观敏感/语义控制可以获得更多标准UI。
因此,为了获得NSVisualEffectView可以提供的内容活力效果,它需要与充满活力的外观结合使用:.vibrantLight
或.vibrantDark
。没有设置"充满活力的"外观,NSVisualEffectView只会在后台提供半透明效果,其中的内容看起来很简单,没有你在侧边栏或标题栏中看到的特殊混合模式。