NSVisualEffectView更改需要多次单击才能更改

时间:2016-03-23 20:18:13

标签: objective-c xcode macos cocoa nsvisualeffectview

所以我有一个NSVisualEffectView与一个按钮和一些图标相连。此视图的material原来等于NSVisualEffectMaterialDark,换句话说,是充满活力的黑暗。

我写的以下代码是假设来执行以下操作:

1)检测视图的素材是NSVisualEffectMaterialDark还是NSVisualEffectMaterialLight
2)将BOOL isDark分别更改为YES / NO 3)根据当前视图,将视图的appearance更改为material,从暗到亮/从浅到暗。

问题在于,当我运行应用程序并单击按钮时,NSVisualEffectView的颜色从饱和的黑暗变为较小的颜色,而不是预期的光。

如何解决此问题并防止其发生?

注意: NSVisualEffectView的名称为sideBar,按钮的名称为lightButtonisDark最初设为{{1} }}

这是我的代码:

YES

1 个答案:

答案 0 :(得分:0)

事实证明,我写的代码有点问题,正如预期的那样。 NSVisualEffectView没有检查上述材料,NSVisualEffectMaterialDarkNSVisualEffectMaterialLight,因此两个条件均为假。似乎它选择将材料设置为不同类型的暗,以便材料最终匹配并能够正确地比较它们。

通过声明材料(NSVisualEffectMaterialDarkNSVisualEffectMaterialLight),在- (void)applicationDidFinishLaunching:(NSNotification *)aNotification中我能解决问题,我必须点击两次按钮才能实际工作。

修改

事实证明还有其他我不知道的材料,它们恰好是理想的材料。
这些是NSVisualEffectMaterialMediumLightNSVisualEffectMaterialUltraDark