NSAppearance,NSEffectView.Material和“Vibrancy”之间的关系是什么

时间:2017-08-18 03:30:04

标签: cocoa appkit nsvisualeffectview

与问题标题一样,NSAppearanceNSEffectView.Material和“活力”之间的关系是什么?我通过实验发现,对于某些材料,NSAppearance的选择可以改变材质的显示方式(例如,NSEffectView.Material.titlebar将根据活动NSAppearance而变亮或变暗),同时其他材料(例如.light)似乎并不关心。

我怀疑像.titlebar这样的材料是从.dark.ultradark.light.mediumLight中选择的代理,具体取决于NSAppearance ,但那似乎是.appearanceBased的作用。我在NSAppearance.Name.vibrantLight ...

的说明中也看到了
  

只应在NSVisualEffectView或其子视图之一上设置。

......这有点与NSEffectView文档中的陈述相矛盾......

  

视图的有效外观必须允许活力......在大多数情况下,您在窗口或视觉效果视图上设置外观 - 子视图然后继承外观。

...建议将vibrantLight设置为整个窗口的NSAppearance可能是正确的(如果这是您想要的外观)。

最后,我对“振动”究竟是什么感到困惑;如果有人能够解释,那就太好了。

1 个答案:

答案 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只会在后台提供半透明效果,其中的内容看起来很简单,没有你在侧边栏或标题栏中看到的特殊混合模式。