gpt4 book ai didi

cocoa - NSAppearance、NSEffectView.Material 和 "Vibrancy"之间有什么关系

转载 作者:行者123 更新时间:2023-12-03 16:56:37 25 4
gpt4 key购买 nike

如问题标题所示,NSAppearanceNSEffectView.Material 和“vibrancy”之间的关系是什么?我通过实验发现,对于某些 Material ,NSAppearance 的选择可以改变 Material 的显示方式(例如,NSEffectView.Material.titlebar 将变亮或变暗,具体取决于事件的 NSAppearance),而其他 Material (例如 .light)似乎并不关心。

我怀疑像 .titlebar 这样的 Material 是从 .dark.ultradark.light 中选择的代理> 和 .mediumLight 取决于 NSAppearance,但这似乎是 .appearanceBased 的角色。我还在 NSAppearance.Name.vibrantLight 的描述中看到...

This should only be set on an NSVisualEffectView or one of its subviews.

...这与 NSEffectView 文档中的声明有些矛盾...

The view’s effective appearance must allow vibrancy... in most cases you set the appearance on the window or on the visual effect view—subviews then inherit the appearance.

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

最后,我对“活力”到底是什么感到困惑;如果有人能解释一下,那就太好了。

最佳答案

所以一个NSAppearance通常描述外观所针对的 View 层次结构的控件样式、颜色等。

NSVisualEffectView 提供了一种实现两种效果的方法:半透明和活力。前者更为明显,带有半透明的侧边栏或标题栏。还有documentation对活力有一个非常好的描述:

Vibrancy is associated with translucency. It describes a compositing mode that does special blending such as Plus Lighter, Plus Darker, Color Dodge, or Color Burn.

基本上描述了视觉效果 View 中的内容(文本、图像等)如何与半透明进行合成。

<小时/>

那么这些有什么关系呢?

Material

Material 描述了半透明效果的外观。正如您所指出的,有些受 NSAppearance 影响,有些则不受。从语义上描述其用法,以便自定义 UI 可以类似于该效果,而不管外观如何(.appearanceBased.titlebar.menu.popover.sidebar.selection),而其他则允许对生成的半透明度进行特定控制(.light) 、.dark.mediumLight.ultraDark),但应与其关联的 NSAppearance 结合使用,以便内容在视觉效果 View 内可以配合半透明的效果。除非您需要对 Material 进行特定控制,否则使用外观敏感/语义的 Material 可以得到更标准的 UI。

活力

因此,为了获得 NSVisualEffectView 能够提供的内容活力效果,需要将其与充满活力的外观结合使用:.vibrantLight.vibrantDark。如果不设置“充满活力”的外观,NSVisualEffectView将仅在背景中提供半透明效果,其中的内容将看起来很普通,并且没有像在侧边栏或标题栏中看到的特殊混合模式。

关于cocoa - NSAppearance、NSEffectView.Material 和 "Vibrancy"之间有什么关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45748069/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com