首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSVisualEffectView更改需要多次单击才能更改

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

Stack Overflow用户
提问于 2016-03-23 20:18:12
回答 1查看 270关注 0票数 0

所以我有一个NSVisualEffectView连接一个按钮和一些图标。这个视图的material最初等于NSVisualEffectMaterialDark,换句话说,充满活力的黑暗。

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

1)检测视图的材料是NSVisualEffectMaterialDark还是NSVisualEffectMaterialLight

2)将BOOL isDark分别更改为是/否

3)根据当前视图,将视图的appearance (换句话说,material )从“黑暗”更改为“光明/光明”。

问题是,当我运行这个应用程序并点击按钮时,NSVisualEffectView的颜色就会从一个饱和的黑暗变成一个较少的颜色,而不是它应该有的光。

我能做些什么来解决这个问题并防止它发生呢?

注意:NSVisualEffectView的名字是sideBar,按钮的名字是lightButtonisDark最初设置为YES

这是我的代码:

代码语言:javascript
复制
    -(IBAction)toggleLighting:(id)sender{
    if (self.sideBar.material == NSVisualEffectMaterialDark){
        _lightButton.title = (@"Dark Mode");
        [_lightButton setImage:[NSImage imageNamed:@"Dark Mode Icon"]];
        [_lightButton setAlternateImage:[NSImage imageNamed:@"Dark Mode Icon (Alt)"]];
        isDark = YES;
        NSLog(@"Changed to Light Theme");
    } else if (self.sideBar.material == NSVisualEffectMaterialLight){
        _lightButton.title = (@"Light Mode");
        [_lightButton setImage:[NSImage imageNamed:@"Light Mode Icon"]];
        [_lightButton setAlternateImage:[NSImage imageNamed:@"Light Mode Icon (Alt)"]];
        isDark = NO;
        NSLog(@"Changed to Dark Theme");
    }

    if (isDark==YES){
        _sideBar.material = NSVisualEffectMaterialLight;
        isDark = NO;
    } else if (isDark==NO) {
        _sideBar.material = NSVisualEffectMaterialDark;
        isDark = YES;
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-24 22:21:58

当然,正如我所期望的那样,我编写的代码有点问题。NSVisualEffectView没有它检查的上述材料,NSVisualEffectMaterialDarkNSVisualEffectMaterialLight,因此这两个条件都是假的。它似乎选择将材料设置为不同类型的黑暗,这样材料最终将匹配,并能够适当地进行比较。

通过声明任何一种材料(NSVisualEffectMaterialDarkNSVisualEffectMaterialLight),在- (void)applicationDidFinishLaunching:(NSNotification *)aNotification中,我能够修复我必须单击两次按钮才能实际工作的问题。

编辑:

原来还有其他一些我不知道的材料,它们恰好是我想要的。

这些是NSVisualEffectMaterialMediumLightNSVisualEffectMaterialUltraDark

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36187933

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档